簡體   English   中英

DropShadowEffect方向遵循控件的RotateTransform

[英]DropShadowEffect direction follows the RotateTransform of a control

關於我的陰影效果,我需要一些幫助。 我目前正在使用帶陰影的控件進行旋轉。 但是當我旋轉控件時,下拉陰影也會跟隨該方向。 這些是示例圖像:

這是尚未旋轉用戶控件時陰影的正常外觀。

這是旋轉控件后的下拉陰影

這是我的控件和陰影的代碼:

<local:CogWheel x:Name="CogWheel2" Width="100" Height="100" GearColor="#FF4D5D" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="105,13,0,0" RenderTransformOrigin="0.5,0.5">
                    <local:CogWheel.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform/>
                            <SkewTransform/>
                            <RotateTransform Angle="100"/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </local:CogWheel.RenderTransform>
                    <local:CogWheel.Effect>
                        <DropShadowEffect Color="#FF4D5D" BlurRadius="20" ShadowDepth="12" Direction="280" Opacity="0.70"/>
                    </local:CogWheel.Effect>
                </local:CogWheel>

我想旋轉控件,但保持其陰影方向。 任何幫助,將不勝感激。 謝謝!

編輯:

我自己解決了此問題,方法是將控件旋轉到透明網格,然后將陰影添加到網格中。

我認為您可以將“角度”添加到“陰影效果”方向以保留效果

   var rotate = (CogWheel2.RenderTransform as TransformGroup).Children.Where(x => x is RotateTransform).FirstOrDefault() as RotateTransform;
        this.shadowEffect.Direction = 280 + rotate.Angle;

在父網格上應用陰影效果可以完成此工作。

要詳細說明Justin CI的答案:將DropShadowEffect.Direction綁定到RotateTransform.Angle也可以。 動畫播放時很方便。

<local:CogWheel x:Name="CogWheel2" GearColor="#FF4D5D" RenderTransformOrigin="0.5,0.5">
    <local:CogWheel.RenderTransform>
        <RotateTransform Angle="100" x:Name="rotation"/>
    </local:CogWheel.RenderTransform>
    <local:CogWheel.Effect>
        <DropShadowEffect Direction="{Binding Angle, ElementName=rotation}" Color="#FF4D5D" />
    </local:CogWheel.Effect>
</local:CogWheel>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM