2009-11-01 80 views
4

在数字成像中之间的混合,叠置两视觉层时,有多种方式可以计算出,当从下层的光照射穿过以某种方式的阻隔层,其导致图像。这可以提供不会像自然现象那样发生的效果,例如色彩相乘。WPF - 控制过半透明层

这里是在Photoshop提供的图层混合模式菜单的例子:

http://www.psdtop.com/blog/wp-content/images/020_Blending-Modes/blending-mode.jpg

我建议您访问的文章Understanding Blending Modes如果这个话题是不是你熟悉的东西。它提供了每个选项对两层结果的极好展示。

据我所知,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> 

,看起来像这样:

http://img4.imageshack.us/img4/5541/temprx.png

我想知道是否有任何的方式来控制层混合的方式。

回答

5

你在找什么,如果你google一下,你会发现很多 被称为混合模式。 这是一个简单的example如何使用像素着色器来实现。你会使用multi-input shader effect这个。

这是一个非常好的complete tutorial引导您完成创建的使用多输入渲染效果的混合模式可重用库。

混合模式为WPF API的内在组成部分经常requested以来的CTP早期,但从未进入的产品。

+0

感谢您的支持。不幸的是,他们没有得到支持,但亚当·斯密做了很好的解释为什么在你提供的链接中就是这种情况。 Cory Plott的三部分教程也使得阅读更好。 – 2009-11-02 22:44:17

+0

谢谢恭维德鲁!该系列现在有6个职位,还有一个计划在我的脑海中。 – cplotts 2009-12-11 20:30:47

3

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

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

这不是一个简单的事情,我明白了。有时候使用静态图形资源更容易妥协。我们的UI设计人员不能使用WPF颜色混合,因此我们的界面的某些部分使用简单的.png文件,他绝对必须以某种方式使用它。

5

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

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

这是迄今为止的系列(按时间顺序)。我希望再写一篇关于如何使用这些混合模式的文章......以及他们为表格带来什么价值。

如果我能指出你一组的酸味ce代码/二进制文件使用,这将是one我在哪里混合模式库不透明感知。这是在WPF和Silverlight上工作的最新和最棒的部分。具有色调,饱和度,颜色和亮度效果的最终post是库的WPF唯一版本,因为这些效果需要Pixel Shader 3.0,并且目前只有WPF 4.0支持该版本。

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

+0

干杯Cory为您在这方面的工作。我同意在框架本身中获得对此的支持是非常好的(并且亚当·斯密用某种方式解释了为什么它不在那里http://social.msdn.microsoft.com/forums/en-US/ WPF /线程/ e41de282-7d7a-4127-9d8d-815e66354a87 /)。 – 2009-12-20 22:45:04

+0

谢谢德鲁。是的,很好的解释...不是。你会注意到我在线程中发表了评论。 :) – cplotts 2009-12-21 00:41:39

+0

这些东西是否适用于WinRT/Windows Store应用程序?我有一些我需要一些“变暗”混合模式。 – Ani 2013-02-20 05:05:46