在XAML中旋转后的DropShadowEffect

时间:2017-02-03 14:10:49

标签: wpf xaml

我有一个多边形,表示仪表上的针。针根据压力表上的当前值旋转。

针使用DropShadowEffect投射阴影,但阴影随针一起旋转,因为阴影是在执行RenderTransformation之前生成的。

这是多边形的XAML

  <Polygon Points="3,1 -3,1 -2,-60 0,-100 2,-60">
    <Polygon.RenderTransform>
      <TransformGroup>
        <ScaleTransform>
          <ScaleTransform.ScaleY>
            <MultiBinding Converter="{StaticResource MultiplyConverter}">
              <MultiBinding.Bindings>
                <Binding ElementName="InnerEllipse" Path="ActualWidth"/>
                <Binding Source="0.0045"/>
              </MultiBinding.Bindings>
            </MultiBinding>
          </ScaleTransform.ScaleY>
        </ScaleTransform>
        <RotateTransform>
          <RotateTransform.Angle>
            <MultiBinding Converter="{StaticResource AngleConverter}">
              <MultiBinding.Bindings>
                <Binding Path="Ratio"                  RelativeSource="{RelativeSource TemplatedParent}"/>
                <Binding Path="ParentGauge.StartAngle" RelativeSource="{RelativeSource TemplatedParent}"/>
                <Binding Path="ParentGauge.EndAngle"   RelativeSource="{RelativeSource TemplatedParent}"/>
              </MultiBinding.Bindings>
            </MultiBinding>
          </RotateTransform.Angle>
        </RotateTransform>
      </TransformGroup>
    </Polygon.RenderTransform>
    <Polygon.Fill>
      <LinearGradientBrush EndPoint="0,0.5" StartPoint="1,0.5">
        <GradientStop Color="{Binding Path=Color, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource LightenOrDarkenColor}, ConverterParameter=0.2}" Offset="0.462"/>
        <GradientStop Color="{Binding Path=Color, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource LightenOrDarkenColor}, ConverterParameter=-0.2}" Offset="0.552"/>
      </LinearGradientBrush>
    </Polygon.Fill>
    <Polygon.Effect>
      <DropShadowEffect ShadowDepth="3"/>
    </Polygon.Effect>
  </Polygon>

有没有什么方法可以让它在执行旋转后产生阴影,以便阴影来自一致的方向?

修改

顺便说一句,我知道我可以为DropShadowEffect定义Direction,我想我可以将它绑定到仪表的值,这样它就会向相反方向旋转,但我想可能会更简单一些而且更优雅的方法。

0 个答案:

没有答案