如何并排合并两个以上的图像?

How can I merge more than two images side by side?

这会合并两张图片,但如果我想合并两张以上怎么办?

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

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

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

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