我会从c#应用程序中指定位置打印矩形。 例如,距离薄片的左边缘1厘米,距离薄片的顶部边缘1厘米。
我试过这样的事情:
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Brush brush = new SolidBrush(Color.Black);
Pen blackPen = new Pen(Color.Black, 1);
e.Graphics.PageUnit = GraphicsUnit.Millimeter;
e.PageSettings.Margins = new Margins(10, 10, 10, 10);
Rectangle rect = new Rectangle(10, 10, 50, 90);
e.Graphics.DrawRectangle(blackPen, rect);
}
但它无法正常工作。
答案 0 :(得分:0)
This似乎是对整个问题非常有帮助的讨论。
如果您希望边距有效,则需要将PrintDocument.OriginsAtMargins
从默认值(false)更改为true。
由于您似乎没有这样做,您的来源将位于可打印区域,依赖于打印机,并且似乎位于(3,2) )毫米为您的打印机。对此进行简单的测试就是打印到PDF
打印机,该打印机应该将整页作为其可打印区域;所以它应该出现在页面的左上角。
因此,如果您将printDocument.OriginAtMargins = true;
添加到BeginPrint
事件(或者您设置的页面),然后将矩形打印到(0,0),它应该出现在您设置的边距上..
答案 1 :(得分:0)
我将void改为:
printDocument1.OriginAtMargins = true;
Graphics g = e.Graphics;
Brush brush = new SolidBrush(Color.Black);
Pen blackPen = new Pen(Color.Black, 1);
e.Graphics.PageUnit = GraphicsUnit.Millimeter;
e.PageSettings.Margins = new Margins(0, 0, 0, 0);
Rectangle rect = new Rectangle(10, 10, 20, 20);
e.Graphics.DrawRectangle(blackPen, rect);
现在在打印时,我从纸张的左边缘开始有13毫米的矩形,从纸张的顶部边缘开始有12毫米的矩形,但当我将代码更改为:
printDocument1.OriginAtMargins = true;
Graphics g = e.Graphics;
Brush brush = new SolidBrush(Color.Black);
Pen blackPen = new Pen(Color.Black, 1);
e.Graphics.PageUnit = GraphicsUnit.Millimeter;
e.PageSettings.Margins = new Margins(0, 0, 0, 0);
Rectangle rect = new Rectangle(10, 10, 20, 20);
e.Graphics.DrawRectangle(blackPen, rect);
并打印到pdf打印机我在工作表上的0,0上有rectango ...