在WPF中更改Alpha混合模式?

Har*_*ald 6 wpf alphablending

System.Drawing.Graphics类有一个属性CompositionMode,有两个选项:SourceOver(基于alpha组件,混合用已经存在的背景绘制的任何东西)或SourceCopy,它只是用正在绘制的内容覆盖背景.

WPF中是否存在类似的内容?

在WPF中,当我在另一个上面绘制PolyLine时,新的PolyLine总是与背景混合.我认为这与使用的容器无关.我正在使用Canvas但无法在任何地方找到混合模式属性.我想要做的是上面提到的SourceCopy组合模式.即新的PolyLine应该简单地覆盖Canvas上已有的内容.

有没有一种简单的方法可以做到这一点,没有使用像素着色器(据我所知 - 它无论如何都无法工作,因为我无法访问Canvas后台缓冲区).

我没有坚持使用Canvas,并且很乐意使用任何支持覆盖模式的容器.

我目前有一个基于WriteableBitmap的解决方案,我获取了System.Drawing.Graphics上下文,然后操作CompositionMode.它的工作原理,但由于我的窗口全屏,解决方案会对性能产生严重影响.

澄清和示例:WPF窗口是完全透明的,Canvas(背景颜色(0,0,0,0))也是如此.现在我使用Color.FromArgb(128,128,0,0)绘制PolyLine.我现在有一条半透明的红色折线.接下来,我使用Color.FromArgb(0,0,0,0)绘制相同的PolyLine.由于发生了α混合,结果与之前相同.然而,我想要的是用第二条折线擦除红色折线(这正是Graphics类中的SourceCopy模式所做的.

Zac*_*son 0

我认为您需要做的就是确保用于填充/描边的画笔具有PolyLine完全不透明的 alpha 值(即255)。那么背景就不应该混合进去。