Линейный сегмент.Отсутствует штриховка в UWP

#c# #uwp #draw

#c# #uwp #рисовать

Вопрос:

В Wpf вы можете

 <Path Stroke="White" Fill="#50ffffff" StrokeThickness="2">
        <Path.Data>
            <PathGeometry>
                <PathFigure StartPoint="20,20">
                    <LineSegment Point="100,20" />
                    <LineSegment Point="100, 100" IsStroked="False"/>
                    <LineSegment Point="20, 100"/>
                    <LineSegment Point="20, 20"/>
                </PathFigure>
            </PathGeometry>
        </Path.Data>
    </Path>
  

Чтобы получить

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

К сожалению, в UWP нет IsStroked свойства в LineSegment классе, есть ли какой-либо известный обходной путь для этого случая?

Спасибо

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

1. Разве этого нельзя было достичь простым удалением нужного сегмента? Пока есть только один пробел, и IsClosed = false это должно сработать (вам, конечно, придется изменить порядок строк).

Ответ №1:

Чтобы преодолеть это ограничение, вы должны быть в состоянии разбить Path на несколько Paths , пропуская области без обводки. В примере кода вы могли бы даже сохранить его как единый Path , начав в правом верхнем углу и продолжая против часовой стрелки, заканчивая в правом нижнем углу.

В более сложных сценариях использование нескольких Paths немного менее чисто, чем в WPF, но это должно быть функциональное решение.

Ответ №2:

Пока есть только один пробел, это тоже должно работать:

 <Path Stroke="White" Fill="#50ffffff" StrokeThickness="2">
    <Path.Data>
        <PathGeometry>
            <PathFigure StartPoint="100,20" IsClosed="False">
                <LineSegment Point="20,20"/>
                <LineSegment Point="20,100"/>
                <LineSegment Point="100,100"/>
            </PathFigure>
        </PathGeometry>
    </Path.Data>
</Path>
  

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

1. Я вижу, проблема в том, что моя реальная форма более сложная, чем в этом примере