Как нарисовать линию со стрелкой и прямым углом с помощью xaml

#wpf #xaml

Вопрос:

Учитывая начальную и конечную точки в xaml, я могу нарисовать прямую линию.

 <Grid Padding="40">
    <Path
        x:Name="arcPath"
        Opacity="1"
        StrokeThickness="2"
        Stroke="Red">
        <Path.Data>
            <LineGeometry>
                <LineGeometry.StartPoint >
                    <Point X="0" Y="0"/>
                </LineGeometry.StartPoint>
                <LineGeometry.EndPoint>
                    <Point X="0" Y="100"/>
                </LineGeometry.EndPoint>
            </LineGeometry>
        </Path.Data>
    </Path>
</Grid>
 

Но теперь я хочу добавить больше, например, прямой угол и стрелку. Как это сделать в xaml.

введите описание изображения здесь

Комментарии:

1. Используйте путь или полилинию

2. По крайней мере, для такой стрелки требуется набор из четырех точек: начало, конец и точка на каждом углу. Вычислите их и установите полилинию. Нарисуйте небольшой треугольник на кончике, используя путь.

3. Они не записываются в xaml

4. Если вам не нужно вычислять траекторию линии по заранее заданным координатам, и вы записываете все координаты вручную в XAML, то в создании такой стрелки нет проблем. Я бы показал вам, как именно, но ваша тема закрыта и не принимает ответов. Внесите некоторые изменения в вопрос (чтобы переопределить причину закрытия) и попросите открыть тему для ответов.

5. Я могу попытаться открыть или создать новую проблему. thx.

Ответ №1:

 <Grid VerticalAlignment="Center" HorizontalAlignment="Center" >
    <Path StrokeThickness="2"
          Stroke="Red"
          Fill="{Binding Stroke, RelativeSource={RelativeSource Self}}">
        <Path.Data>
            <PathGeometry>
                <PathFigure StartPoint="0 0" IsFilled="False">
                    <LineSegment Point="20 0"/>
                    <LineSegment Point="20 100"/>
                    <LineSegment Point="0 100"/>
                </PathFigure>
                <PathFigure StartPoint="0 100" IsClosed="True">
                    <LineSegment Point="10 95"/>
                    <LineSegment Point="10 105"/>
                </PathFigure>
            </PathGeometry>
        </Path.Data>
    </Path>
</Grid>
 

введите описание изображения здесь