Windows表格打印的单位是不是一直都是100dpi点?
Is the unit in Windows Forms printing always 100dpi point?
使用PrintDocument
class打印Windows表格时坐标系的单位是什么?需要此信息才能在特定位置以特定尺寸打印内容。
在PrintPage
event, the PrintPageEventArgs
instance has the properties Graphics
and PageBounds
。他们似乎使用相同的坐标系。
对于 A4 纵向 sheet,PageBounds
returns 大小为 827 x 1169。给定 A4 sheet 为 210mm x 297mm,单位 Graphics
/ PageBounds
单位似乎是 pixels/points 100dpi。 (827 / 210 * 25.4 = 100.0278, 1169 / 297 * 25.4 = 99.9751).
使用100dpi缩放定位对象,绘制结果正确。但它总是 100dpi 吗?或者如何查询单位?
(查询Graphics.DpiX
不行,returns600dpi,是打印机DPI,不是坐标系DPI。)
private void PrintButton_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);
pd.Print();
}
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
Rectangle bounds = e.PageBounds; // For A4 portrait sheet: {X = 0 Y = 0 Width = 827 Height = 1169}
float dpi = e.Graphics.DpiX; // 600
DrawIt(e.Graphics);
}
感谢吉米指出单位是显示。简短的回答是:打印总是 100dpi。
Graphics 实例使用 GraphicsUnit.Display as the PageUnit。对于打印机,这是 1/100 英寸打印机 ,即 100dpi。文档说 “通常” 但这可能指的是 视频显示 。
它也与PrinterUnit.Display重合,总是0.01in。
由于 图形 测量值也与 PageBounds
, I can probably safely assume that PageBounds
and other PrintPageEventArgs
属性一致,因此也使用 打印机显示单位 100dpi。虽然没有记录。
使用PrintDocument
class打印Windows表格时坐标系的单位是什么?需要此信息才能在特定位置以特定尺寸打印内容。
在PrintPage
event, the PrintPageEventArgs
instance has the properties Graphics
and PageBounds
。他们似乎使用相同的坐标系。
对于 A4 纵向 sheet,PageBounds
returns 大小为 827 x 1169。给定 A4 sheet 为 210mm x 297mm,单位 Graphics
/ PageBounds
单位似乎是 pixels/points 100dpi。 (827 / 210 * 25.4 = 100.0278, 1169 / 297 * 25.4 = 99.9751).
使用100dpi缩放定位对象,绘制结果正确。但它总是 100dpi 吗?或者如何查询单位?
(查询Graphics.DpiX
不行,returns600dpi,是打印机DPI,不是坐标系DPI。)
private void PrintButton_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);
pd.Print();
}
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
Rectangle bounds = e.PageBounds; // For A4 portrait sheet: {X = 0 Y = 0 Width = 827 Height = 1169}
float dpi = e.Graphics.DpiX; // 600
DrawIt(e.Graphics);
}
感谢吉米指出单位是显示。简短的回答是:打印总是 100dpi。
Graphics 实例使用 GraphicsUnit.Display as the PageUnit。对于打印机,这是 1/100 英寸打印机 ,即 100dpi。文档说 “通常” 但这可能指的是 视频显示 。
它也与PrinterUnit.Display重合,总是0.01in。
由于 图形 测量值也与 PageBounds
, I can probably safely assume that PageBounds
and other PrintPageEventArgs
属性一致,因此也使用 打印机显示单位 100dpi。虽然没有记录。