【问题标题】:How can I merge more than two images side by side?如何并排合并两个以上的图像?
【发布时间】:2022-01-22 01:26:07
【问题描述】:

这会合并两个图像,但是如果我想合并两个以上的图像呢?

我不确定如何添加另一张或更多图片。

private Bitmap MergeImages(Image image1, Image image2)
{
    Bitmap bitmap = new Bitmap(image1.Width + image2.Width, Math.Max(image1.Height, image2.Height));
    using (Graphics g = Graphics.FromImage(bitmap))
    {
        g.DrawImage(image1, 0, 0);
        g.DrawImage(image2, image1.Width, 0);
    }
    
    bitmap.MakeTransparent();
    
    return bitmap;
}

例如 3 张图片:

private Bitmap MergeImages(Image image1, Image image2, Image image3)
{
    Bitmap bitmap = new Bitmap(image1.Width + image2.Width, Math.Max(image1.Height, image2.Height));
    using (Graphics g = Graphics.FromImage(bitmap))
    {
        g.DrawImage(image1, 0, 0);
        g.DrawImage(image2, image1.Width, 0);
    }
    
    bitmap.MakeTransparent();
    
    return bitmap;
}

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    只需编写一个循环,跟踪所有绘制图像的当前宽度:

    private Bitmap MergeImages(IEnumerable<Image> images)
    {
        var totalWidth = images.Sum(i => i.Width);
        var maxHeight = images.Max(i => i.Height);
        Bitmap bitmap = new Bitmap(totalWidth , maxHeight );
        var currentXPos = 0;
        using (Graphics g = Graphics.FromImage(bitmap))
        {
            foreach(var image in images)
            {
                g.DrawImage(image, currentXPos, 0);
                currentXPos += image.Width;
            }
        }
    
        bitmap.MakeTransparent();
    
        return bitmap;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-19
      • 2019-10-12
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      相关资源
      最近更新 更多