首先,我想说明的是,我对.NET中的成像名称空间知之甚少。尝试将两个字节数组的图像数据合并为一个WPF按钮位图
我有两个字节的图像数据数组,我想合并成一个WPF按钮的位图。我想在C#代码中做所有这些都是可能的。背景图片可以是jpeg或png,叠加图片绝对是带有透明区域的png。叠加图像是我想添加到原始图像中的“已售出”横幅之一。我有一个函数可以将图像转换为button.background将要处理的东西。
我试过这两个图像,它工作得很好。接下来的部分是由于我不熟悉.Net中的图像处理而让我难以接受。我已经看到了关于RenderTargetBitmap的一些信息,但是我一直无法弄清楚如何获得基本/背景位图来渲染第二个位图,也许还有另一种方法。这里是我从之前的编码器/项目继承的函数的副本。
我必须采取的字节数组转换过来的东西,我可以直接分配给button.background:
public static BitmapImage ByteArrayToImageBrush(this byte[] imageData)
{
if (imageData == null || imageData.Length == 0) return null;
var image = new BitmapImage();
using (var mem = new MemoryStream(imageData))
{
mem.Position = 0;
image.BeginInit();
image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = null;
image.StreamSource = mem;
image.EndInit();
}
image.Freeze();
return image;
}
我已经定义,从按钮调用CategoryButton继承一个新的类,它有一些其他杂项。属性。我可以成功地把任何图片作为背景的按钮,当我在代码中创建的按钮具有以下内容:
CategoryButton catbtn = new CategoryButton();
catbtn.Background = new ImageBrush(ByteArrayToImageBrush(bgImageByteArray);
// * or *
catbtn.Background = new ImageBrush(ByteArrayToImageBrush(overlayImageByteArray);
所以我知道函数作品不够好。但是,如何将字节数组或ImageBrush生成为我可以“添加”/合并第二个覆盖图像的东西,然后将其转换为可用于按钮背景的格式?我知道这是一个很大的问题,但我很难过,而且我在试图弄清楚的时候感到沮丧!
抱歉耽搁...但你给了我正要想办法的。 ..它的工作方式,我需要非常感谢... – 2014-09-03 13:09:29