2010-02-21 66 views

回答

5

在Silverlight 3中,它被稱爲DropShadow效果。

例如,

<Border Height="300" Width="300" Background="Gray"> 
     <Border.Effect> 
      <DropShadowEffect Opacity="0.34" ShadowDepth="9" Direction="542" BlurRadius="9"/> 
     </Border.Effect> 
    </Border> 
+0

我正在談論文本。文本下的1像素白線。 – Burt 2010-02-21 18:35:48

+0

效果仍然可以通過投影來實現,謝謝。 – Burt 2010-02-21 18:40:19

0

我偶然發現了這一點的同時,試圖找出如何做這自己。

對我來說,我沒有控制的原始應用程序(Visual Studio的,順便說一句),當我施加任何額外的WPF元素的結果更是離奇的「輝光影子」是相當從文本中刪除。我永遠不知道如何使它工作,所以我寫了一個專門爲此的ShaderEffect。

您可以下載該項目from its repo

要使用它,直接應用效果的文本元素(標籤,文本框等):

<Label Content="My Label Content"> 
    <Label.Effect> 
     <effects:ChiseledTextEffect 
       ShadowIntensity="1" GlowIntensity="1" Size="0.5" MixDivisor="3" /> 
    </Label.Effect> 
</Label> 

當然,包括:

xmlns:effects="clr-namespace:Diagonactic.WPF.Effects;assembly=Diagonactic.WPF"

...在XAML中的適當位置並引用該項目。

我已經包括的參數實際上是默認值,所以你可以把它們趕走,除非你需要調整它。

我的目標是用於阱進行鑿(或者如果尺寸被設定爲負數斜角),爲HLSL/WPF ShaderEffect實現。它是PixelShader 2.0,所以它應該適用於Silverlight,儘管我沒有親自測試它。

完整的文檔是here和有它看起來如何配置的非默認微妙的一點會給你一個截圖,但這裏的簡略版:

尺寸 - 像素尺寸爲閃爍/陰影(0.5會產生下面有一個可見的光暈;上面的陰影非常微妙,並且會在樣本中的黑暗文本中隱藏)。使用負數來獲得斜角。

發光/陰影強度 - 增加/減少效果。同時增加兩者會使文本保持其原始顏色,增加一個或另一個會影響渲染文本的顏色和效果的強度。

MixDivisor - 將文本和效果混合到背景中。 3.0是一個非常微妙的混合,2.0是沒有。如果文本位於圖像頂部或不一致的背景上,但文本與背景的對比度較低,則將數字增加到3.0以上會很有用。這個用例的強度和除數一起工作。