Направление DropShadowEffect следует за RotateTransform элемента управления - PullRequest
0 голосов
/ 11 апреля 2019

Мне нужна помощь относительно моего эффекта дропшоу. В настоящее время я работаю над вращением элемента управления с тенью. но когда я вращаю элемент управления, тень также следует за направлением. Вот примеры изображений:

это нормальный вид тени, когда пользовательский элемент еще не повернут.

и это тень после вращения регулятора

это мой код для этого элемента управления и drophadow:

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

Я хочу повернуть элемент управления, но сохранить направление его тени. любая помощь будет оценена. спасибо!

EDIT:

Я решил это самостоятельно, поместив элемент управления, в котором я вращаюсь, в прозрачную сетку и вместо этого добавив в нее каплю тени.

1 Ответ

1 голос
/ 11 апреля 2019

Я думаю, что вы можете добавить угол к направлению эффекта тени, чтобы сохранить эффект

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