为什么 WPF 路径图在某些旋转时没有填充



箭头应该有一个红色填充,但在旋转变换的某些角度处缺少填充。它从~92°消失到~279°

在我的整个项目中,也只填充了箭头的一部分。这是 WPF 呈现错误还是我在这里做错了什么?

  <StackPanel Orientation="Vertical">
    <Slider x:Name="slider"
            Value="180"
            Minimum="0"
            Maximum="360" />
    <Canvas Width="296"
            Height="296">
      <Canvas.Background>
        <DrawingBrush Stretch="Uniform">
          <DrawingBrush.Drawing>
            <DrawingGroup>
              <GeometryDrawing Brush="Red">
                <GeometryDrawing.Pen>
                  <Pen Brush="Lime"
                       Thickness="2" />
                </GeometryDrawing.Pen>
                <GeometryDrawing.Geometry>
                  <PathGeometry>
                    <PathGeometry.Transform>
                      <TransformGroup>
                        <RotateTransform Angle="{Binding ElementName=slider, Path=Value}" />
                      </TransformGroup>
                    </PathGeometry.Transform>
                    <PathGeometry.Figures>
                      <PathFigure IsClosed="True"
                                  StartPoint="100 50">
                        <LineSegment Point="50 87.5" />
                        <LineSegment Point="50 62.5" />
                        <LineSegment Point=" 0 62.5" />
                        <LineSegment Point=" 0 37.5" />
                        <LineSegment Point="50 37.5" />
                        <LineSegment Point="50 12.5" />
                      </PathFigure>
                    </PathGeometry.Figures>
                  </PathGeometry>
                </GeometryDrawing.Geometry>
              </GeometryDrawing>
            </DrawingGroup>
          </DrawingBrush.Drawing>
        </DrawingBrush>
      </Canvas.Background>
    </Canvas>
  </StackPanel>

你可以简单地通过它的 RenderTransform 来旋转路径:

<Path Width="296" Height="296" Stretch="Uniform"
      Fill="Red" Stroke="Lime" StrokeThickness="8"
      Data="M100,50 L50,87.5 50,62.5 0,62.5 0,37.5 50,37.5 50,12.5Z"
      RenderTransformOrigin="0.5,0.5">
    <Path.RenderTransform>
        <RotateTransform Angle="{Binding ElementName=slider, Path=Value}" />
    </Path.RenderTransform>
</Path>

最新更新