如何以毫米为单位绘制矩形

时间:2012-08-31 07:36:12

标签: c# asp.net-mvc

using (var mem = new MemoryStream())
using (var bmp = new Bitmap(85, 54))
using (var gfx = Graphics.FromImage((Image)bmp))
{
    // gfx.SmoothingMode = SmoothingMode.AntiAlias;
    gfx.PageUnit = GraphicsUnit.Millimeter;
    gfx.FillRectangle(Brushes.Red, new Rectangle(0, 0, bmp.Width, bmp.Height));

    //add question
    gfx.DrawString(captcha, new Font("Arial", 5), Brushes.Blue, bmp.Width / 2, bmp.Height/2);

    //render as Jpeg
    bmp.Save(mem, System.Drawing.Imaging.ImageFormat.Jpeg);
    img = this.File(mem.GetBuffer(), "image/Jpeg");
}

return img;

这不起作用。 我需要85x54毫米

怎么做?

我需要绘图用于打印

2 个答案:

答案 0 :(得分:1)

此位图的大小以像素为单位。

在常规显示器上显示位图时,单个像素将为1/96英寸。其他显示可能有其他DPI(Dots Per Inch) - 例如Retina displays

大多数打印机支持至少300 DPI。

所以您需要做的是获取DPI of the screenprinter并相应地调整位图大小或使用允许您指定DPI的图像格式(矢量?)。某些位图格式还允许您指定预期的DPI

答案 1 :(得分:0)

数字图像始终以像素为单位。绝不是毫米或英寸。根据打印时使用的DPI(每英寸点数),像素将转换为毫米或英寸。

对于屏幕,每英寸使用72像素,打印使用300。

对于您的照片(85x54mm = 3.34x2.12in),请使用(3.34 * 300)x(2.12 * 300)= 1002 x 637像素进行打印。