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毫米
怎么做?
我需要绘图用于打印
答案 0 :(得分:1)
此位图的大小以像素为单位。
在常规显示器上显示位图时,单个像素将为1/96英寸。其他显示可能有其他DPI(Dots Per Inch) - 例如Retina displays
大多数打印机支持至少300 DPI。
所以您需要做的是获取DPI of the screen或printer并相应地调整位图大小或使用允许您指定DPI的图像格式(矢量?)。某些位图格式还允许您指定预期的DPI
答案 1 :(得分:0)
数字图像始终以像素为单位。绝不是毫米或英寸。根据打印时使用的DPI(每英寸点数),像素将转换为毫米或英寸。
对于屏幕,每英寸使用72像素,打印使用300。
对于您的照片(85x54mm = 3.34x2.12in),请使用(3.34 * 300)x(2.12 * 300)= 1002 x 637像素进行打印。