2010-02-21 68 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以上会很有用。这个用例的强度和除数一起工作。