如何合并两个图像?

时间:2013-11-24 14:07:50

标签: c# .net windows-phone-7 c#-4.0 windows-phone-8

如何在一张图片中合并画布?我需要这样做,因为我想保存合并图像。

这是我的代码:

WriteableBitmap wb = new WriteableBitmap(50, 50);
wb.LoadJpeg(stream);
Image t = new Image();
t.Source = wb;
Canvas.SetLeft(t, 130);
Canvas.SetTop(t, 130);
canvas1.Children.Add(t);

所以现在我想将这两个图像合并为一个并使用我的保存功能。

3 个答案:

答案 0 :(得分:1)

您可以使用Graphics.FromImage()和Graphics.DrawImage()

http://msdn.microsoft.com/en-us/library/system.drawing.graphics.fromimage%28v=vs.110%29.aspx

http://msdn.microsoft.com/en-us/library/42807xh1%28v=vs.110%29.aspx

// Pseudo ...
using (Graphics gfx = Graphics.FromImage(image1))
{
    gfx.DrawImage(image2, new Point(0, 0));
}

// image1 is now merged with image 2

答案 1 :(得分:0)

您没有详细说明" merge"的含义。你的意思是,将图像重叠在一起(如果是这样的话,什么覆盖模式?添加?乘?正常?)或者将图像并排合并成一个更大的图像(比如拍3张照片)一台相机,然后将它们组合成一张长照片)?无论哪种方式,您都需要查看System.Drawing命名空间。

假设后者是这种情况。这就是你要做的事情:

Image a = ...;
Image b = ...;
//assuming equal height, and I forget whether the ctor is width first or height first
Image c = new Image(a.Width + b.Width, a.Height);
Graphics g = Graphics.FromImage(c);
g.DrawImage(...); //a lot of overloads, better check out the documentation
SaveImage(c); //depending on how you want to save it
g.Dispose();

答案 2 :(得分:0)

您需要第三方库,例如WriteableBitmapEx。查看Blit方法。