投影效果 WPF
DropShadowEffect WPF
我是 WPF/XAML 编码新手。我正在尝试向矩形形状添加投影效果。矩形的 XAML 是:
代码 1
<Rectangle HorizontalAlignment="Left" Height="552" Margin="2,10,0,0"
VerticalAlignment="Top" Width="427" StrokeThickness="4"
Fill="#FF484A4D" Grid.Column="1"/>
DropShadowEffect 的代码是:
代码 2
<Rectangle.Effect>
<DropShadowEffect x:name="Dshadow" BlurRadius="10" ShadowDepth="0" Color="Black"/>
</Rectangle.Effect>
问题是,我不能 combine/use 这两个代码在一起。当我在 CODE 1 之后安排 CODE 2 时,它不起作用。我应该如何fix/arrange这些代码?
你应该不在第一行关闭你的Rectangle
。
<Rectangle HorizontalAlignment="Left"
Height="552"
Margin="2,10,0,0"
VerticalAlignment="Top"
Width="427"
StrokeThickness="4"
Fill="#FF484A4D"
Grid.Column="1">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10"
ShadowDepth="0"
Color="Black"/>
</Rectangle.Effect>
</Rectangle>
您需要访问 Rectangle
的 Property
- 如果您已经关闭 Element
,则无法执行此操作。
Rectangle.Effect 必须在 Rectangle 组件标签内声明。
<Rectangle>
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="0" Color="Black"/>
</Rectangle.Effect>
或者,您可以在 XAML 中声明一个 Style 标签,该标签可以反复用于组件。下面是一个样式 sheet 的示例,它会自动将效果添加到 XAML 中的所有 Rectangle。
<Window.Resources>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect x:Name="shadowEffectButton" Color="Black" ShadowDepth="0" BlurRadius="5"/>
</Setter.Value>
</Setter>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Effect.ShadowDepth" From="0" To="3" Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Effect.ShadowDepth" From="3" To="0" Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style></Window.Resources>
我是 WPF/XAML 编码新手。我正在尝试向矩形形状添加投影效果。矩形的 XAML 是:
代码 1
<Rectangle HorizontalAlignment="Left" Height="552" Margin="2,10,0,0"
VerticalAlignment="Top" Width="427" StrokeThickness="4"
Fill="#FF484A4D" Grid.Column="1"/>
DropShadowEffect 的代码是:
代码 2
<Rectangle.Effect>
<DropShadowEffect x:name="Dshadow" BlurRadius="10" ShadowDepth="0" Color="Black"/>
</Rectangle.Effect>
问题是,我不能 combine/use 这两个代码在一起。当我在 CODE 1 之后安排 CODE 2 时,它不起作用。我应该如何fix/arrange这些代码?
你应该不在第一行关闭你的Rectangle
。
<Rectangle HorizontalAlignment="Left"
Height="552"
Margin="2,10,0,0"
VerticalAlignment="Top"
Width="427"
StrokeThickness="4"
Fill="#FF484A4D"
Grid.Column="1">
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10"
ShadowDepth="0"
Color="Black"/>
</Rectangle.Effect>
</Rectangle>
您需要访问 Rectangle
的 Property
- 如果您已经关闭 Element
,则无法执行此操作。
Rectangle.Effect 必须在 Rectangle 组件标签内声明。
<Rectangle>
<Rectangle.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="0" Color="Black"/>
</Rectangle.Effect>
或者,您可以在 XAML 中声明一个 Style 标签,该标签可以反复用于组件。下面是一个样式 sheet 的示例,它会自动将效果添加到 XAML 中的所有 Rectangle。
<Window.Resources>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect x:Name="shadowEffectButton" Color="Black" ShadowDepth="0" BlurRadius="5"/>
</Setter.Value>
</Setter>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Effect.ShadowDepth" From="0" To="3" Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Effect.ShadowDepth" From="3" To="0" Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style></Window.Resources>