如何将一个图像叠加到另一个图像上?

时间:2010-03-19 17:03:01

标签: c# wpf image image-processing overlay

我想显示由两个图像组成的图像。

我希望图片 rectangle.png 顶部上显示图片 sticker.png ,其左手< / strong>像素10,10处的角落。

据我所知,如何合并图像?

Image image = new Image();
image.Source = new BitmapImage(new Uri(@"c:\test\rectangle.png"));
image.Stretch = Stretch.None;
image.HorizontalAlignment = HorizontalAlignment.Left;

Image imageSticker = new Image();
imageSticker.Source = new BitmapImage(new Uri(@"c:\test\sticker.png"));

image.OverlayImage(imageSticker, 10, 10); //how to do this?

TheContent.Content = image;

2 个答案:

答案 0 :(得分:12)

您需要一个Panel才能将两个Image控件添加到。 Grid或Canvas将允许这样做,但我会使用Grid,因为它会约束Image控件(从而适当地拉伸或缩小它们)。

Image image = new Image();
image.Source = new BitmapImage(new Uri(@"c:\test\rectangle.png"));
image.Stretch = Stretch.None;
image.HorizontalAlignment = HorizontalAlignment.Left;

Image imageSticker = new Image();
imageSticker.Source = new BitmapImage(new Uri(@"c:\test\sticker.png"));
imageStiker.Margin = new Thickness(10, 10, 0, 0);

Grid grid = new Grid();
grid.Children.Add(image);
grid.Children.Add(imageSticker);

TheContent.Content = grid;

答案 1 :(得分:2)

您可以将一个Image控件放在View中另一个Image控件的顶部。将两者放入网格或画布中,然后将其中一个图像叠加在另一个上面。这也允许你使用不透明度进行混合,并且效果非常好。

如果您需要将它们放入相同的图像中,有几个选项....

您可以从第一张图片中制作WritableBitmap,然后手动“绘制”第一张图像顶部的其他图像像素。然后,它可以作为显示器中图像的图像源。

或者,您可以执行我上面提到的叠加层,并将其渲染为RenderTargetBitmap。然后可以将其用作图像源。