3

我正在尝试使用 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();
}

如果两个旧图像的分辨率相同,这可以正常工作。

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

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

4

2 回答 2

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
于 2009-08-10T08:54:53.910 回答
1

基本上,您需要在添加到新图像之前调整第二张图像的大小。

尽管您说要保留原始高度和宽度,但您需要更改第二张图像的画布大小。这通过在实际图像周围添加空白空间来增加图像的大小。如果第二张图片大于第一张,则需要对第一张图片执行此操作。

于 2009-06-01T09:09:09.260 回答