Я пытаюсь измерить высоту некоторого текста для цели печати.Высота строки, измеренная с помощью MeasureString в PrintPreviewDialog, отличается от фактической печати
Вот код. В моем случае он печатает разные цифры в предварительном просмотре и на фактической странице. Я не могу попробовать ни на одном принтере, кроме Microsoft Office Document Image Writer, но я уверен, что это не проблема с принтером.
Возможно, кто-то нашел обходное решение этой проблемы?
private void button1_Click(object sender, EventArgs e)
{
Print();
}
public void Print()
{
PrintDocument my_doc = new PrintDocument();
my_doc.PrintPage += new PrintPageEventHandler(this.PrintPage);
PrintPreviewDialog my_preview = new PrintPreviewDialog();
my_preview.Document = my_doc;
my_preview.ShowDialog();
my_doc.Dispose();
my_preview.Dispose();
}
private void PrintPage(object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.PageUnit = GraphicsUnit.Pixel;
string s = "String height is ";
SizeF h = e.Graphics.MeasureString(s, new Font("Arial", 24));
e.Graphics.DrawString(s + Convert.ToString(h.Height),
new Font("Arial", 24), new SolidBrush(Color.Black), 1, 1);
}
Просто любопытно: коэффициент предварительного просмотра-высоты-печати-высоты остается ровно в 1.029336, если вы попробуете размер шрифта, отличный от 24? – MusiGenesis 2008-11-19 06:49:28