0
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 毫米

这是怎么做的?

我需要绘制打印

4

2 回答 2

1

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

当您在常规显示器上显示位图时,单个像素将为 1/96 英寸。其他显示器可能有其他 DPI(每英寸点数) - 例如Retina 显示器

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

因此,您需要做的是获取屏幕打印机的 DPI并相应地调整位图的大小,或者使用允许您指定 DPI 的图像格式(矢量?)。某些位图格式还允许您指定预期的 DPI

于 2012-08-31T07:42:43.610 回答
0

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

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

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

于 2012-08-31T07:41:49.600 回答