gpt4 book ai didi

wpf - 在 WPF 中更改 Alpha 混合模式?

转载 作者:行者123 更新时间:2023-12-04 16:13:03 30 4
gpt4 key购买 nike

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

WPF中是否存在类似的东西?

在 WPF 中,当我在另一个之上绘制一条折线时,新的折线总是与背景混合。我认为这与正在使用的容器无关。我正在使用 Canvas ,但在任何地方都找不到混合模式属性。我要做的就是上面提到的SourceCopy compositionmode 所做的。 IE。新的折线应该简单地覆盖 Canvas 上已经存在的任何内容。

有没有一种简单的方法可以做到这一点,而不是使用像素着色器(据我所知,它无论如何都行不通,因为我无法访问 Canvas 后备缓冲区)。

我没有被 Canvas 卡住,并且很乐意使用任何支持覆盖模式的容器。

我目前有一个基于 WriteableBitmap 的解决方案,我为其获取 System.Drawing.Graphics 上下文,然后操作 CompositionMode。它可以工作,但由于我的窗口是全屏的,因此该解决方案会对性能产生严重影响。

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

最佳答案

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

关于wpf - 在 WPF 中更改 Alpha 混合模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911713/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com