2013-11-24 2 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 Form. –

-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

0

Вам нужна библиотека третьей стороной, как WriteableBitmapEx. Посмотрите на метод Blit.

Смежные вопросы