2015-12-24 42 views
0

我需要绘制一个矩形,在纸上打印时应该是2X2英寸左右的大小。绘制尺寸为2X2英寸的矩形 - 切换到像素转换

我知道,我可以借鉴使用

g.DrawRectangle(pen, 100,100, 100, 200); 

这个应用程序将只在computers.How使用矩形我可以转换英寸到正常像素,这样打印时,我可以得到想要的尺寸。

+0

全部取决于打印机上的DPI(每英寸点数)设置。当您发送文档进行打印时,您应该能够指定所需的DPI,以便使其更容易一些。基本上,如果你有100dpi的打印机,例如,那么你想绘制矩形2000 x 2000(20 x 100)......当然你需要足够大的纸张。你的标准A4不适合 – musefan

+0

@musefan对不起,它是2X2英寸。 – techno

+0

公顷,然后只是重新计算然后... [DPI设置] x [长度以英寸] = [像素数量] – musefan

回答

1

默认情况下,要以正确的大小打印图像,它需要有dpi和像素的正确组合。

让我们来看一个例子:

// aiming at 150dpi and 4x6 inches: 
float dpi = 150; 
float width = 4; 
float height = 6; 

using (Bitmap bmp = new Bitmap((int)(dpi * width), (int)(dpi * height))) 
{ 
    // first set the resolution 
    bmp.SetResolution(dpi, dpi); 
    // then create a suitable Graphics object: 
    using (Graphics G = Graphics.FromImage(bmp)) 
    using (Pen pen = new Pen(Color.Orange)) 
    { 
     pen.Alignment = System.Drawing.Drawing2D.PenAlignment.Center; 
     G.Clear(Color.FloralWhite); 
     // using pixels here: 

     Size sz = new System.Drawing.Size((int)dpi * 2 - 1, (int)dpi * 2 - 1); 
     G.DrawRectangle(pen, new Rectangle(new Point(0, 0), sz)); 
     G.DrawRectangle(pen, new Rectangle(new Point(0, 300), sz)); 
     G.DrawRectangle(pen, new Rectangle(new Point(0, 600), sz)); 
     G.DrawRectangle(pen, new Rectangle(new Point(300, 0), sz)); 
     G.DrawRectangle(pen, new Rectangle(new Point(300, 300), sz)); 
     G.DrawRectangle(pen, new Rectangle(new Point(300, 600), sz)); 

     // alternative code: 
     // we can also set the Graphics object to measure stuff in inches; 
     G.PageUnit = GraphicsUnit.Inch; 
     // or fractions of it, let's use 10th: 
     G.PageScale = 0.1f; 
     using (Pen pen2 = new Pen(Color.MediumPurple, 1f/dpi * G.PageScale)) 
     { 
      // draw one rectangle offset by an inch: 
      G.DrawRectangle(pen2, 10f, 10f, 20f, 20f); 
     } 

     bmp.Save(@"D:\xxx.jpg", ImageFormat.Jpeg); 
    } 
} 

注意,我不得不从绘制大小减去1个像素为DrawRectangle透支 1个像素!

enter image description here

请注意,我在画坐标取决于分辨率!另请注意,jpeg格式如何创建大量模糊的颜色。 Png创建更加清晰的结果,尤其是一旦您打印文本。

另请注意我是如何在替代代码中缩小PenWidth的!

+0

非常感谢。因此,对于不同的纸张尺寸,我只需更改宽度,高度和继续绘制矩形。 – techno

+0

是的。在更好的分辨率下打印也是如此。请注意,我绘制的坐标取决于分辨率!另请注意,jpeg格式如何创建模糊的颜色。 – TaW

+0

我想问这个问题。你是如何得到价值300的? – techno