#wpf #drawing
#wpf #рисование
Вопрос:
Я не знаю, как объяснить название, но у кого-нибудь есть идея, как я могу сделать красные углы без сетки. Возможно ли использовать только BorderBrush?
Редактировать:
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type Path}">
<Setter Property="Stroke" Value="#FF006E8C"/>
<Setter Property="StrokeThickness" Value="1"/>
<Setter Property="RenderOptions.EdgeMode" Value="Aliased"/>
</Style>
</Grid.Resources>
<Canvas Width="8" Height="8" ClipToBounds="True" HorizontalAlignment="Left" VerticalAlignment="Top">
<Path Canvas.Left="1" Canvas.Top="1" Data="M0,8L0,0L8,0"/>
</Canvas>
<Canvas Width="8" Height="8" ClipToBounds="True" HorizontalAlignment="Right" VerticalAlignment="Top">
<Path Canvas.Left="0" Canvas.Top="1" Data="M0,0L8,0L8,8"/>
</Canvas>
<Canvas Width="8" Height="8" ClipToBounds="True" HorizontalAlignment="Left" VerticalAlignment="Bottom">
<Path Canvas.Left="1" Canvas.Top="0" Width="8" Height="8" Data="M8,8L0,8L0,0"/>
</Canvas>
<Canvas Width="8" Height="8" ClipToBounds="True" HorizontalAlignment="Right" VerticalAlignment="Bottom">
<Path Canvas.Left="0" Canvas.Top="0" Data="M8,0L8,8L0,8"/>
</Canvas>
</Grid>
Комментарии:
1. Нарисовав 8 коротких линий в нужном месте.
2. Я не знаю почему, но позиции неправильно отображаются для правого, нижнего. Если параметры визуализации. EdgeMode=»Aliased»
3. Что именно вы имеете в виду «без сетки»?
4. Моей первой идеей было создать сетку из 2-х строк col 2 и поместить в нее контуры.
5. Но разве вы не говорили, что вам не нужна сетка? И что такое «Пути»?
Ответ №1:
Если вы не возражаете против использования Grid
, как показывает ваш пример кода, вы можете использовать Border
элементы управления и изменять их BorderThickness
в зависимости от того, какой угол они представляют:
<Grid>
<Border
VerticalAlignment="Top"
HorizontalAlignment="Left"
BorderThickness="1,1,0,0"
BorderBrush="Red"
Width="10" Height="10"
/>
<Border
VerticalAlignment="Top"
HorizontalAlignment="Right"
BorderThickness="0,1,1,0"
BorderBrush="Red"
Width="10" Height="10"
/>
<Border
VerticalAlignment="Bottom"
HorizontalAlignment="Left"
BorderThickness="1,0,0,1"
BorderBrush="Red"
Width="10" Height="10"
/>
<Border
VerticalAlignment="Bottom"
HorizontalAlignment="Right"
BorderThickness="0,0,1,1"
BorderBrush="Red"
Width="10" Height="10"
/>
<TextBlock
Text="Add"
HorizontalAlignment="Center"
VerticalAlignment="Center"
/>
</Grid>