在指定位置打印矩形

时间:2015-08-09 13:07:10

标签: c# printdocument

我会从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);
}

但它无法正常工作。

2 个答案:

答案 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 ...