【问题标题】:Make a WriteableBitmap Transparent in Windows Phone 8.1 C# WinRT Programmatically以编程方式在 Windows Phone 8.1 C# WinRT 中使 WriteableBitmap 透明
【发布时间】:2016-09-14 19:19:22
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# windows-runtime windows-phone-8.1 transparency writeablebitmap


    【解决方案1】:

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

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

    【讨论】:

    • 这使整个图像透明。我只想让一种特定颜色透明...背景颜色。
    【解决方案2】:

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

    您需要遍历所有像素并根据您的规则设置 ARGB 值,以便在需要时添加透明度,可能根据需要取消预乘和预乘 RGB。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      相关资源
      最近更新 更多