我在 WinRT 中屏蔽图像时遇到问题。基本上,我需要做的是从基础图像中剪下一个拼图形状。我将拼图形状作为 PNG 黑白图像,其中形状本身是白色的,背景是黑色的,也是拼图的透明形状。这实际上是 iOS 应用程序的一个端口,他们使用带有黑白蒙版的 CGContextClipToMask 来剪切拼图。我尝试使用 WriteableBitmapEx 中的 Blit 来掩盖图像,但我从未达到我想要的结果,我得到的最接近的是正确切割的形状,但背景是黑色的,而不是什么都没有。切出这种形状的正确方法是什么?感谢所有的答案!
问问题
941 次
2 回答
2
实际上,Windows 8 中的 WinRT/XAML 没有OpacityMask
其他 XAML 框架的实现。您可以使用WriteableBitmap
来操纵像素,但它有点慢,尤其是在 ARM 设备上。更快的解决方案是使用 Direct2D,它内置了一个FillOpacityMask方法。由于 SharpDX为 .NET 很好地包装了它,您也可以使用 C# 来做到这一点。
于 2013-03-29T14:45:04.327 回答
1
我没有代码,但最简单的情况是在 Photoshop/GIMP/任何在线透明度工具中打开 PNG 文件,然后将黑色像素 alpha 映射为零。
另一个例子是直接在代码中执行此操作,WriteableBitmapEx 具有更改每个像素的功能,您所要做的就是循环遍历所有黑色像素并将 alpha 更改为 0。
于 2013-03-29T14:28:30.377 回答