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

C# 如何以毫米为单位绘制矩形,c#,asp.net-mvc,C#,Asp.net Mvc,这不管用。 我需要85x54毫米 这是怎么回事 我需要绘图打印数字图像总是以像素为单位。千万不要用毫米或英寸。根据打印时使用的DPI(每英寸点数),像素将转换为毫米或英寸 对于屏幕,使用每英寸72像素,对于打印,使用300像素 对于您的图片(85x54mm=3.34x2.12in),使用(3.34*300)x(2.12*300)=1002 x 637像素进行打印。此位图的大小以像素为单位 在常规显示器上显示位图时,单个像素将为1/96英寸。其他显示器可能有其他DPI()-例如 大多数打印机至少支

这不管用。 我需要85x54毫米

这是怎么回事


我需要绘图打印

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

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


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

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

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

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


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

,当然它不起作用-像素和毫米不是一回事。请尝试使用图形类。它具有PageUnit属性,您可以将其设置为毫米。或者像其他人所说的那样,计算1毫米内的像素数量。当然,它并不总是1/96英寸。例如,您可以在1024x768或1920x1200分辨率下运行同一个监视器-显然,当您这样做时,“像素”的大小将非常不同@马修沃森-对,我只是说了一般情况。
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;