如何在c#中打印具有确切大小的矩形?

时间:2013-05-13 18:25:55

标签: c# printing shapes

我是Dot Net的新手,我想打印一个宽度为20毫米,高度为8毫米的矩形,如果我用刻度测量的话。我也想在矩形的正中间打印文本。任何人都建议我如何实现这个目标?


我很抱歉早些时候不清楚。我尝试过使用“PageUnits”工作正常。但是,我的边距有问题。

如果我使用打印机“HP LaserJet P2035n”,我可以打印正确的边距(左边8.8mm,顶部22mm)。如果使用“Canon iR2020 PCL5e”进行打印,我的页边距不正确(8.1mm左侧和8.0mm顶部),我应该得到8.8mm左边和22mm顶边距。有人可以解释我在哪里做错了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Printing;
namespace ConsoleApplication6
{
    class DrawShape
    {
        public static void DrawRec()
        {
            PrintDocument doc = new PrintDocument();
            doc.PrintPage += doc_PrintPage;
            doc.Print();
        }

        static void doc_PrintPage(object sender, PrintPageEventArgs e)
        {
            Graphics g = e.Graphics;
            PageSettings PageSet = new PageSettings();
            float MarginX = PageSet.PrintableArea.X;
            float MarginY = PageSet.PrintableArea.Y;
            float x = (float)(8.8-((MarginX/100)*25.4));
            float y = (float)(22-((MarginY/100)*25.4));
            g.PageUnit = GraphicsUnit.Millimeter;
            g.DrawRectangle(Pens.Black, x, y, 20, 8);

        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可能想从这开始:

    private void button1_Click(object sender, EventArgs e)
    {
        using (Graphics formGraphics = this.CreateGraphics())
        {
            formGraphics.PageUnit = GraphicsUnit.Millimeter;
            formGraphics.DrawRectangle(Pens.Blue, 0, 0, 20, 80);
        }
    }

然后,您可以在Graphics对象上使用DrawString在矩形内绘制文本。