我正在尝试使用C#Drawing命名空间并排绘制两个图像。 这是一个非常简单的例子,假设我们有两个相同高度的图像:
Image[] oldImages = GetOldImages();
var newImage = new Bitmap(oldImages[0].Width + oldImages[1].Width, 800);
using (var newImageGraphics = Graphics.FromImage(newImage))
{
newImageGraphics.DrawImage(oldImages[0], 0, 0);
newImageGraphics.DrawImage(oldImages[1], oldImage[0].Width, 0);
newImageGraphics.Save();
}
如果两张旧图像的分辨率相同,则此功能正常。
但是,如果分辨率不同,则会调整图像大小,从而导致出现问题。例如,如果第一张图像的分辨率不同,则第二张图像的位置将不正确。
有谁知道如何轻松解决这个问题?理想情况下,我希望原始图像的高度和宽度在绘制到新图像时保持不变。
答案 0 :(得分:4)
尝试这个技巧:
Bitmap picture_1 = new Bitmap(picture_1_path);
Graphics graphics = Graphics.FromImage(picture_1);
Bitmap picture_2 = new Bitmap(picture_2_path);
picture_2.SetResolution(graphics.DpiX, graphics.DpiY);
//Then do with pictures anything
答案 1 :(得分:1)
基本上,在添加到新图像之前,您需要调整第二张图像的大小。
虽然如您所说,您希望保留原始高度和宽度,但您需要更改第二张图像的画布大小。这通过在实际图像周围添加空白空间来增加图像的大小。如果第二张图像大于第一张图像,则需要对第一张图像执行此操作。