投影效果WPF

0md85ypi  于 2023-02-20  发布在  其他
关注(0)|答案(2)|浏览(108)

我是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>

问题是,我不能把这两个代码合并/一起使用。当我把CODE 2排在CODE 1之后时,它就不起作用了。我应该如何修复/排列这些代码?

bqucvtff

bqucvtff1#

您应该在第一行结束您的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>

您需要访问RectangleProperty-如果您已经关闭了该Element,则无法执行此操作。

pgccezyw

pgccezyw2#

必须在Rectangle组件标记内声明Rectangle.Effect

<Rectangle>
    <Rectangle.Effect>
        <DropShadowEffect BlurRadius="10" ShadowDepth="0" Color="Black"/>
    </Rectangle.Effect>    
</Rectangle>

或者,您可以在XAML中声明一个Style标记,该标记可反复用于组件。下面是样式表的示例,它会自动将效果添加到XAML中的所有矩形。

<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>

       <Style.Triggers>
            <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>

相关问题