WinRT屏蔽图像

时间:2013-03-29 13:16:16

标签: c# .net graphics windows-runtime

我遇到了在WinRT中屏蔽图像的问题。基本上,我需要做的是从基本图像中剪出拼图形状。我有拼图形状作为PNG黑白图像,其中形状本身是白色和背景黑色,也作为拼图块的透明形状。这实际上是iOS应用程序的一个端口,他们使用带有黑色和白色蒙版的CGContextClipToMask来剪切拼图。 我尝试使用WriteableBitmapEx中的Blit来掩盖图像,但我从未达到我想要的结果,我得到的最接近的是正确剪切的形状,但是背景为黑色,而不是没有。切割这种形状的正确方法是什么?谢谢你的所有答案!

2 个答案:

答案 0 :(得分:2)

实际上,Windows 8中的WinRT / XAML没有其他XAML框架的OpacityMask实现。您可以使用WriteableBitmap来操纵像素,但它有点慢,尤其是在ARM设备上。更快的解决方案是使用Direct2D,它内置了FillOpacityMask方法。由于SharpDX wraps it很适合.NET,你也可以用C#做​​到这一点。

答案 1 :(得分:1)

我没有代码,但最简单的情况是在Photoshop / GIMP /任何在线透明工具中打开PNG文件,只将黑色像素alpha映射到零。

另一个例子是直接在代码中执行此操作, WriteableBitmapEx具有更改每个像素的功能, 所有你需要做的就是遍历所有黑色像素并将alpha改为0。