В настоящее время я пытаюсь смоделировать железнодорожные пути, используя заданные координаты.Ранее я использовал значение Rounded для свойства StrokeStart и StrokeEnd LineCap, однако добавленный радиус, который вы получаете с этим значением, вызывал проблемы при добавлении стыков треков.Я переключился на значение «flat» для LineCap, которое работает намного лучше, за исключением того факта, что «углы» моего трека не заполнены, например:
Отсутствуют углы https://imgur.com/a/EliIlzD
Я пытался противодействовать этому, рендерив все мои треки сначала со значением «Round», а затем снова перерисовывая их сверху с помощью значения «Flat», что кажетсячтобы заполнить углы, но это приводит к другим проблемам, таким как перекрывающиеся цвета, когда дорожка занята, и округленные дорожки, которые я рендерил, сначала появляются в конце дорожки:
Перекрывающиеся цвета https://imgur.com/a/0XCVGv5
Проблемы в конце дорожки https://imgur.com/a/fKju9uA
Мой XAML - это простая линия, образованная изсписок координат с различными привязками из моей модели вида и конвертеры для небольшого уменьшения моих координат.Это, очевидно, треки, отрисованные в первую очередь с помощью Rounded EndCaps:
<Line X1="{Binding X1, Converter={StaticResource ScaleXCoordConverter}}" Y1="{Binding Y1, Converter={StaticResource ScaleYCoordConverter}}"
X2="{Binding X2, Converter={StaticResource ScaleXCoordConverter}}" Y2="{Binding Y2, Converter={StaticResource ScaleYCoordConverter}}"
Stroke="{Binding DataContext.LineColor, RelativeSource={RelativeSource AncestorType=ContentPresenter, AncestorLevel=2}}"
StrokeThickness="2" StrokeEndLineCap="Round" StrokeStartLineCap="Round">
<Line.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding DataContext.OccupyTrackCommand, RelativeSource={RelativeSource AncestorType=ContentPresenter, AncestorLevel=2}}"/>
</Line.InputBindings>
</Line>
У кого-нибудь была удача в создании пользовательской линии, которая решает эти проблемы, где вы можете использовать значение Flat для LineCap, сохраняя углыбез проблем?РЕДАКТИРОВАТЬ: просто чтобы прояснить, я полагаю, что я прошу о специальной реализации линии или линейного колпачка для решения всех этих проблем, но любое другое решение очень приветствуется.