尝试基于打印机dpi以英寸为单位打印矩形。在8.5x11的纸张上,可打印区域的宽度报告为850,而dpi报告为600。这很奇怪。我试图乘以英寸 * dpi,得到一个太大的框。(显然)我从
PrinterSettings.DefaultPageSettings.PrinterResolution.X;
结果是600我在这里遗漏了什么,为什么宽度与分辨率相差如此之大?
PrintDataPage dp = PrintData[Pageno];
float yloc = Top;
Rectangle Box = new();
PointF point;
int dpi = prdc.PrinterSettings.DefaultPageSettings.PrinterResolution.X;
// float pry = prdc.PrinterSettings.DefaultPageSettings.PrinterResolution.Y;
int bFixWidth =(int) (dpi * 1.875f);
int bFixHeight = (int)(dpi * .1875f);
1条答案
按热度按时间mec1mxoz1#
我做了一些测试,发现
Graphics.PageUnit
被设置为GraphicsUnit.Display
。因此,将其更改为GraphicsUnit.Pixel
以获得所需的结果。请注意,我设置了
printDocument.OriginAtMargins = true;
。否则,您将不得不手动添加边距。我还做了一个测试,将单位设置为
GraphicsUnit.Inch
,以便能够直接以英寸绘制。但由于未知的原因,这并不起作用。