如何:创建具有阴影的文本

更新:2010 年 8 月

本节中的示例演示如何为所显示的文本创建阴影效果。

示例

使用 DropShadowEffect 对象,可以为 Windows Presentation Foundation (WPF) 对象创建各种投影效果。 下面的示例演示应用于文本的投影效果。 在本例中,阴影是柔和阴影,这表示阴影的颜色发生模糊。

具有柔和阴影的文本的示例

Softness 为 0.25 的文本阴影

可以通过设置 ShadowDepth 属性来控制阴影的宽度。 值 4.0 指示阴影的宽度为 4 个像素。 可以通过修改 BlurRadius 属性来控制阴影的柔和程度或模糊程度。 值 0.0 指示无模糊。 下面的代码示例演示如何创建柔和阴影效果。

<!-- Soft single shadow. -->
<TextBlock
  Text="Shadow Text"
  Foreground="Teal">
  <TextBlock.Effect>
    <DropShadowEffect
      ShadowDepth="4"
      Direction="330"
      Color="Black"
      Opacity="0.5"
     BlurRadius="4"/>
  </TextBlock.Effect>
</TextBlock>
注意注意

这些柔和效果不通过 Windows Presentation Foundation (WPF) 文本呈现管道。因此,在使用这些效果时,ClearType 处于禁用状态。

下面的示例演示应用于文本的强烈投影效果。 在本例中,阴影不模糊。

具有强烈阴影的文本的示例

Softness 为 0 的文本阴影

可以通过将 BlurRadius 属性设置为 0.0(这表示不使用阴影)来创建强烈阴影效果。 可以通过修改 Direction 属性来控制阴影的方向。 将该属性的方向值设置为 0 和 360 之间的度数。 下图显示了 Direction 属性设置的方向值。

DropShadow 方向关系图

阴影的 DropShadow 程度设置

下面的代码示例演示如何创建强烈阴影效果。

<!-- Hard single shadow. -->
<TextBlock
  Text="Shadow Text"
  Foreground="Maroon">
  <TextBlock.Effect>
    <DropShadowEffect
      ShadowDepth="6"
      Direction="135"
      Color="Maroon"
      Opacity="0.35"
      BlurRadius="0.0" />
  </TextBlock.Effect>
</TextBlock>

使用模糊效果

BlurBitmapEffect 可用于创建可放置在文本对象后面的类似于阴影的效果。 应用于文本的模糊位图效果会使文本在各个方向上均匀地产生模糊效果。

下面的示例演示应用于文本的模糊效果。

具有模糊效果的文本的示例

使用 BlurBitmapEffect 的文本阴影

下面的代码示例演示如何创建模糊效果。

<!-- Shadow effect by creating a blur. -->
<TextBlock
  Text="Shadow Text"
  Foreground="Green"
  Grid.Column="0" Grid.Row="0" >
  <TextBlock.Effect>
    <BlurEffect
      Radius="8.0"
      KernelType="Box"/>
  </TextBlock.Effect>
</TextBlock>
<TextBlock
  Text="Shadow Text"
  Foreground="Maroon"
  Grid.Column="0" Grid.Row="0" />

使用转换变换

TranslateTransform 可用来创建可放置在文本对象后面的类似于阴影的效果。

下面的代码示例使用 TranslateTransform 来偏移文本。 在本示例中,原始文本下方略微偏移的文本副本产生了阴影效果。

针对阴影效果使用转换功能的文本的示例

使用 TranslateTransform 的文本阴影

下面的代码示例演示如何为阴影效果创建转换。

<!-- Shadow effect by creating a transform. -->
<TextBlock
  Foreground="Black"
  Text="Shadow Text"
  Grid.Column="0" Grid.Row="0">
  <TextBlock.RenderTransform>
    <TranslateTransform X="3" Y="3" />
  </TextBlock.RenderTransform>
</TextBlock>
<TextBlock
  Foreground="Coral"
  Text="Shadow Text"
  Grid.Column="0" Grid.Row="0">
</TextBlock>

修订记录

日期

修订记录

原因

2010 年 8 月

进行了更新以使用新的效果类。

内容 Bug 修复