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つのピクセルは1/96インチになります。他のディスプレイには、 Retinaディスプレイなどの他のDPI(Dots Per Inch )がある場合があります

ほとんどのプリンタは、少なくとも300DPIをサポートしています。

したがって、画面またはプリンターのDPIを取得し、それに応じてビットマップのサイズを変更するか、DPIを指定できる画像形式(ベクトル?)を使用する必要があります。一部のビットマップ形式では、目的のDPIを指定することもできます

于 2012-08-31T07:42:43.610 に答える
0

デジタル画像は常にピクセル単位です。ミリメートルやインチでは決してありません。印刷時に使用するDPI(dots per inch)に応じて、ピクセルはミリメートルまたはインチに変換されます。

画面の場合は1インチあたり72ピクセルを使用し、印刷の場合は300を使用します。

写真(85x54mm = 3.34x2.12in)には、(3.34 * 300)x(2.12 * 300)= 1002x637ピクセルを使用して印刷します。

于 2012-08-31T07:41:49.600 に答える