如何重叠图像并将其存储在新的图像对象中

本文关键字:图像 存储 对象 何重叠 重叠 | 更新日期: 2023-09-27 17:56:20

我有两个图像,现在我想覆盖图像,这样另一个图像出现在另一个图像的中心或左上角,然后当最后两个图像都被覆盖时,我可以将其存储在另一个新的图像对象中,我想在代码后面而不是xaml,怎么做?

if (((Grid)sender).Children.Count > 0)
{
    gridBackground = (ImageBrush)(((Grid)sender).Background);
    gridBackImage = new System.Windows.Controls.Image();
    gridBackImage.Source = gridBackground.ImageSource;
}
System.Windows.Controls.Image imgRejectIcon;
if (((Grid)sender).Children.Count > 0)
{
    imgRejectIcon = (System.Windows.Controls.Image)(((Grid)sender).Children[0]);    
}

现在我想合并 gridBackImage 和 imgRejection 并将其存储在新的图像对象中

如何重叠图像并将其存储在新的图像对象中

你可以按照你想要的任何方式排列你的两个Image,我会把这段代码留给你做(在 XAML 中做起来要简单得多)。在 WPF 中,所有 UI 控件扩展Visual类。当与 RenderTargetBitmap.Render 方法一起使用时,这对于从 UI 控件进行BitmapImage非常有用。

首先,将两个Image控件排列成 Grid 或其他容器控件,然后将容器控件传递给 RenderTargetBitmap.Render 方法并创建一个如下所示的Image

RenderTargetBitmap renderTargetBitmap = 
    new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);
renderTargetBitmap.Render(yourContainerControl); 
PngBitmapEncoder pngImage = new PngBitmapEncoder();
pngImage.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
using (Stream fileStream = File.Create(filePath))
{
    pngImage.Save(fileStream);
}