2013-11-24 146 views
1

如何将画布合并到一个图像中?我需要这样做,因为我想保存合并图像。如何合并一个两个图像?

这里是我的代码:

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

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

回答

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 
+0

我读过一些关于它的信息,但我不能添加名称空间System.Drawing? Windows Phone – user2962457

+0

Windows Phone不支持那样的图形。图形(g),是Windows窗体的东西。 –

-1

你有没有在你的 “合并” 的意思的细节规定。你的意思是,将图像叠加在一起(如果是这种情况,什么样的叠加模式?添加?乘 - 正常?)或将图像并排合并成一个更大的图像(例如用相机拍摄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(); 
+0

我无法添加System.Drawing命名空间。你知道发生了什么事吗? – user2962457

相关问题