【问题标题】:C#: Retain size despite different resolution using Graphics.DrawImageC#:尽管使用 Graphics.DrawImage 的分辨率不同,但仍保持大小
【发布时间】:2009-06-01 09:03:46
【问题描述】:

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

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

但是,如果分辨率不同,则会调整图像大小,从而导致问题。例如,如果第一张图片的分辨率不同,那么第二张图片的定位就会不正确。

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

【问题讨论】:

    标签: c# graphics resolution drawimage


    【解决方案1】:

    试试这个技巧:

    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
    

    【讨论】:

    • 我遇到了两个图像的分辨率问题,这解决了问题。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 2020-10-12
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多