【问题标题】:DropShadowEffect direction follows the RotateTransform of a controlDropShadowEffect 方向遵循控件的 RotateTransform
【发布时间】:2019-09-01 14:06:02
【问题描述】:

我需要一些关于我的投影效果的帮助。我目前正在使用阴影旋转控件。但是当我旋转控件时,阴影也跟随方向。这些是示例图片:

this is the normal look of the dropshadow when the user control is not yet rotated.

and this is the dropshadow after rotating the 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>

我想旋转控件但保留其阴影方向。任何帮助,将不胜感激。谢谢!

编辑:

我自己解决了这个问题,方法是将我正在旋转的控件放到一个透明网格中,然后将阴影添加到网格中。

【问题讨论】:

    标签: c# wpf xaml user-controls wpf-controls


    【解决方案1】:

    我觉得你可以给Shadoweffect的方向加上Angle来保留效果

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

    【讨论】:

    • 但是你知道我怎样才能得到我正在旋转的控件的旋转角度值吗?
    • @MarkSuckSinceBirth 编辑了答案,我不确定你如何轮换
    • 哦,我明白了。但我也自己解决了我的问题,只需将我正在旋转的控件添加到另一个网格并将阴影放入网格中,我就得到了相同的输出。并且阴影不会受到影响。仍然非常感谢。我赞成你的回答。谢谢!
    【解决方案2】:

    在父网格上应用阴影效果来完成这项工作。

    详细说明 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2014-08-02
      • 1970-01-01
      • 2016-03-18
      • 2011-11-25
      相关资源
      最近更新 更多