Почему WPF PathFigure не заполняется при определенных поворотах? - PullRequest
0 голосов
/ 05 апреля 2019

Стрелка должна иметь красную заливку, но заливка отсутствует при определенных углах RotateTransform.Оно исчезает от ~ 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>

1 Ответ

0 голосов
/ 05 апреля 2019

Вы можете просто повернуть путь с помощью 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...