3

別の画像の上に画像を配置する必要があるプログラムに取り組んでいます。しかし、背景の上に画像を配置すると、別の解像度に変更され、その理由がわかりません。ビット深度と DPI をいじってみましたが、どちらも違いはありませんでした。私の元の画像は 574x574 ですが、写真に配置すると 768x768 になります。これが私が使用しているコードです。どんな助けでも大歓迎です。

Image imgBackground = Image.FromFile(r_strApplicationStartupPath + "\\images\\Backing.png");
Image imgPicture1 = Image.FromFile(r_strApplicationStartupPath + "\\images\\Picure1.png");
Image TempImg = Image.FromFile(r_strApplicationStartupPath + "\\images\\Backing.png");
Graphics grfx = Graphics.FromImage(TempImg);
Bitmap bmpFinal = new Bitmap(1296, 1944, PixelFormat.Format32bppArgb);
grfx = Graphics.FromImage(bmpFinal);
grfx.DrawImage(imgBackground, 0, 0);
grfx.DrawImage(imgPicture1, 659, 1282);
bmpFinal.Save(r_strApplicationStartupPath + "\\images\\" + r_strName + " Composite " + r_intCounter.ToString() + ".png", ImageFormat.Png);
4

1 に答える 1

5

コピー先の四角形を指定せずに Graphics.DrawImage を呼び出すと、画像の元の物理サイズ (つまり、ピクセルではなくインチ) を保持する必要があると想定されるため、画像はソース画像とコピー先の DPI に基づいてサイズ変更されます。画像。

DPI を調整せずに画像が元のピクセル サイズで描画されるようにする場合は、宛先の四角形全体を指定するだけです。

grfx.DrawImage(imgPicture1, dstRect, srcRect, GraphicsUnit.Pixel);
于 2013-01-29T16:15:51.407 に答える