В C#.net, как получить текст в середине строки при печати?
Я создал проект в приложении C# windows form. Я использую Visual Studio 2010 и.net Framework версии 4.0. Мой проект имеет кнопку печати. Я написал код для кнопки печати:
private void btn_Print_Click(object sender, EventArgs e)
{
PrintDialog pd = new PrintDialog();
PrintDocument pdoc = new PrintDocument();
PrinterSettings ps = new PrinterSettings();
PaperSize psize = new PaperSize("Custom", 100, 200);
pd.Document = pdoc;
pd.Document.DefaultPageSettings.PaperSize = psize;
pdoc.DefaultPageSettings.PaperSize.Height = 820;
pdoc.DefaultPageSettings.PaperSize.Width = 520;
pdoc.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
DialogResult result = pd.ShowDialog();
if (result == DialogResult.OK)
{
PrintPreviewDialog pp = new PrintPreviewDialog();
pp.Document = pdoc;
result = pp.ShowDialog();
if (result == DialogResult.OK)
{
pdoc.Print();
}
}
}
И код события-хэдлера для элемента управления printDocument1
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
string s1 = "1st line text";
string s2 = "2nd line text";
string s3 = "3rd line text";
Font f1 = new Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Pixel);
Font f2 = new Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Pixel);
Font f3 = new Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Pixel);
e.Graphics.DrawString(s1, f1, Brushes.Black, new Point(260, 10));
e.Graphics.DrawString(s2, f2, Brushes.Black, new Point(260, 20));
e.Graphics.DrawString(s3, f3, Brushes.Black, new Point(260, 30));
}
Мне нужна строка s1,s2,s3 в середине строки. Из приведенного выше кода я получаю 1-й символ этой строки, начиная со средней точки строки. Но мне нужна вся строка в середине строки. Я перепробовал все решения, данные в сети. Но пока не получил результат. Пожалуйста, помогите мне узнать, чего мне не хватает. Спасибо за ваше время.
1 ответ
Решение
e.Graphics.DrawString(s1, f1, Brushes.Black, new RectangleF(0, 10, e.PageBounds.Width, 30), new StringFormat() { Alignment = StringAlignment.Center });
вместо точки установите фактический прямоугольник области, которую нужно напечатать, и установите выравнивание
в вашем утверждении код должен быть
string s1 = "1st line text";
string s2 = "2nd line text";
string s3 = "3rd line text";
Font f1 = new Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Pixel);
Font f2 = new Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Pixel);
Font f3 = new Font("Arial", 10, FontStyle.Regular, GraphicsUnit.Pixel);
e.Graphics.DrawString(s1, f1, Brushes.Black, new RectangleF(0, 10, e.PageBounds.Width, 10), new StringFormat() { Alignment = StringAlignment.Center });
e.Graphics.DrawString(s2, f2, Brushes.Black, new RectangleF(0, 20, e.PageBounds.Width, 10), new StringFormat() { Alignment = StringAlignment.Center });
e.Graphics.DrawString(s3, f3, Brushes.Black, new RectangleF(0, 30, e.PageBounds.Width, 10), new StringFormat() { Alignment = StringAlignment.Center });