如何并排合并两个以上的图像?
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;
}
这会合并两张图片,但如果我想合并两张以上怎么办?
我不确定如何添加另一张或更多图片。
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;
}