我已经采用了一些代码并将其缩减为几行仍然可以重现我所遇到的错误。在这种情况下,我拍摄的图像尺寸为448x298,并尝试将其覆盖在600x450的白色背景上。
所以我期待得到一张带有白色背景的600x450的图像,并且我的原始图像从右上角开始放在它上面。我希望我的原始图像保持原始尺寸。相反,原始图像从448x298变为大约(给出或取一个或两个像素)143x95
以下是执行此操作的简化代码:
System.Drawing.Image oImage = new Bitmap(600, 450);
Graphics oGraphic = Graphics.FromImage(oImage);
oGraphic.FillRectangle(Brushes.White, 0, 0, 600, 450);
oGraphic.DrawImage(image, new Point(0,0));
return (Bitmap)oImage;
答案 0 :(得分:1)
您必须指定目标尺寸。您选择的overload将图像从源dpi缩放到目标dpi。正如another question中所述,您应该这样做:
System.Drawing.Image oImage = new Bitmap(600, 450);
Graphics oGraphic = Graphics.FromImage(oImage);
oGraphic.FillRectangle(Brushes.White, 0, 0, 600, 450);
oGraphic.DrawImage(image, 0,0, image.Width, image.Height);
return (Bitmap)oImage;