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 回答