2009-11-01 79 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