0

我采取了一些代码并将其减少到几行仍然重现我遇到的错误。在这种情况下,我正在拍摄一张 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;
4

1 回答 1

1

您必须指定目标大小。您选择的重载将图像从源 dpi 缩放到目标 dpi。如另一个问题中所述,您应该这样做:

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;
于 2013-11-06T22:04:38.133 回答