WPF - 控制过半透明层之间的混合(WPF - Control over blending be

2019-09-03 08:42发布

在数字成像中,叠置两视觉层时,有多种方式可以计算出,当从下层的光照射穿过以某种方式的阻隔层,其导致图像。 这可以提供不发生自然现象的影响,如乘颜色。

下面是在Photoshop中提供的层的混合模式菜单的例子:


(来源: psdtop.com )

我建议您访问的文章了解混合模式 ,如果这个话题是不是你熟悉的东西。 它提供了对两层每个选项的结果有很大的展示。

据我所知,WPF只提供“正常”选项。 也就是说,下面的UI只是混合的颜色,就像它们着色凝胶:

<Grid>
  <Ellipse Width="40" Height="40" Fill="#80FF0000" Margin="16,0,0,0" />
  <Ellipse Width="40" Height="40" Fill="#8000FF00" Margin="32,32,0,0" />
  <Ellipse Width="40" Height="40" Fill="#800000FF" Margin="0,32,0,0" />
</Grid>

它看起来像这样:

我想知道是否有什么办法来控制其图层混合的方式。

Answer 1:

你所寻找的,如果你google一下,你会发现很多被称为混合模式。 下面是一个简单的例子如何它可以使用像素着色器来实现。 你可以使用多输入渲染效果这一点。

这里是一个很好的完整的教程来引导您完成创建的使用多输入渲染效果的混合模式可重用库。

混合模式为WPF API的内在组成部分已经被频繁请求月初以来的CTP,但从来没有把它做成产品。



Answer 2:

恰好碰到了这个问题... 但你可以用我的混合模式库来做到这一点在某些情况下 (不幸的是有一些限制......我们真的需要这种能力烧入WPF API)。

bitbonk引用在我的博客系列开始后......但每一个岗位都有源代码和附加的混合模式库本身二进制文件。

下面是该系列迄今为止在(按时间顺序)。 我很想写这些的混合模式如何使用一个多岗......他们带来的表什么价值。

  • 混合模式,第一部分
  • 混合模式,第二部分
  • 混合Silverlight的模式
  • 混合模式,第三部分
  • 混合模式:现在意识到不透明度
  • 混合模式:色调,饱和度,颜色和发光度与WPF 4.0

如果我能指出你一组源代码/二进制文件使用,这将是一个在我做的混合模式库不透明知道。 这是两个WPF和Silverlight工作的最新和最伟大位。 最后的后拥有色调,饱和度,颜色和亮度的影响是一个只有WPF版本的函数库,支持Pixel Shader 3.0,需要这些影响,目前只有4.0 WPF支持。

祝你好运,让我知道,如果你用我的图书馆!



Answer 3:

我相信你,你必须编写自定义着色器效果使WPF混合色以不同的方式。

http://msdn.microsoft.com/en-us/library/dd901594(VS.95).aspx滚动到创建自定义的Pixel Shader影响

这不是一个简单的事情,我明白了。 有时更容易通过使用静态图形资源妥协。 我们的UI设计不能与WPF混色生活,所以我们的界面的某些部分使用简单的.png文件,在那里他绝对必须有它看起来一定的方式。



文章来源: WPF - Control over blending between semi-transparent layers