System.Drawing.Graphics类具有一个属性CompositionMode,它具有两个选项:SourceOver(它基于alpha组件,将任何已绘制的背景与已存在的背景混合)或SourceCopy,它只是用正在绘制的任何东西覆盖背景。更改WPF中的Alpha混合模式?
在WPF中有类似的东西吗?
在WPF中,当我在另一个顶部绘制PolyLine时,新的PolyLine总是与背景混合在一起。我认为这与使用的容器无关。我正在使用Canvas,但无法在任何地方找到混合模式属性。我想要做的是上面提到的SourceCopy组合模式。即新的PolyLine应该简单地覆盖Canvas上已有的内容。
有没有一种简单的方法来做到这一点,短的使用像素着色器(据我所知 - 无论如何不会工作,因为我没有访问画布backbuffer)。
我没有被Canvas卡住,很乐意使用任何支持覆盖模式的容器。
我目前有一个基于WriteableBitmap的解决方案,获取System.Drawing.Graphics上下文,然后操作CompositionMode。它的工作原理,但由于我的窗口是全屏,解决方案有严重的性能影响。
说明和示例: WPF窗口完全透明,画布(背景颜色(0,0,0,0))也是完全透明的。现在我用Color.FromArgb(128,128,0,0)绘制PolyLine。我现在有一个半透明的红色折线。接下来,我使用Color.FromArgb(0,0,0,0)绘制相同的PolyLine。由于alpha混合发生,结果与之前一样。然而,我想要的是红色多段线被第二条多段线删除(这正是图形类中SourceCopy模式的作用。)
是的,但我需要用任何alpha值覆盖背景,甚至0。请参阅澄清和我刚刚添加到我的问题的例子。 – Harald 2011-02-06 06:00:26