我正在尝试使用C#绘图名称空间并排绘制两个图像。
这是一个非常简单的示例,假定我们有两个高度相同的图像:

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();
}


如果两个旧图像的分辨率相同,则此方法正常。

但是,如果分辨率不同,则会调整图像大小,从而导致问题。例如,如果第一张图像具有不同的分辨率,则第二张图像将被错误地放置。

有谁知道我可以轻松解决此问题?理想情况下,我希望原始图像的高度和宽度在被绘制到新图像上时保持不变。

最佳答案

试试这个技巧:

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

09-26 02:34