使WriteableBitmap透明在Windows Phone 8.1 c# WinRT编程

本文关键字:WinRT 编程 Phone WriteableBitmap 透明 Windows | 更新日期: 2023-09-27 18:07:11

是否可以在Windows Phone 8.1中使用c#/WinRT编程方式添加WriteableBitmap的透明度?

我在我的项目中引用了WriteableBitmapEx库,用于图像调整大小和位化,这非常有用,它也可能有助于添加透明度或alpha通道/图层,但文档不是很彻底。

最好有一个不使用WriteableBitmapEx库的方法来实现这一点,但无论如何工作…我已经搜索了一段时间,没有太多关于基本解决方案的信息。

这个想法是,用户可以选择一个图像或图形,并将其固定在他们的开始屏幕上,应用程序将使背景颜色透明…可能是白色或黑色,甚至可以使用图像背景的第一个X/Y坐标颜色。

使WriteableBitmap透明在Windows Phone 8.1 c# WinRT编程

您是否尝试过在WriteableBitmapEx中使用透明颜色?例如,要清除整个位图,请使用:

writeableBitmap = new WriteableBitmap(200, 200, 96, 96, PixelFormats.Bgra32, null);
writeableBitmap.Clear(Colors.Transparent);

如果您想自己编辑特定的像素-您需要访问PixelBuffer属性。我确信WriteableBitmapEx一直都在这样做。我的工具也是如此。我现在想不起来像素格式了,但我想应该是ARGB还是P-ARGB?我可能在这里感到困惑,但基本上你的像素缓冲区是一个数组,它拥有所有行像素的数据,每个像素由4个字节定义,所以一个2x2位图将有类似ARGBARGBARGBARGB字节的东西,其中每个字母是四个像素组件值中的一个(0-255,0表示没有颜色,255表示所有RGB都是白色)。R是红色,G是绿色,B是蓝色,A是Alpha -不透明度或透明度。在P像素或预乘像素格式中,出于性能原因(IIRC),所有的RGB值都要额外乘以Alpha通道值。

你需要循环遍历所有像素,并根据你的规则设置ARGB值,以便在需要的地方添加透明度,可能需要不预乘法和预乘法RGB