我想像上面的图片一样实现它。
<Grid>
<Border BorderThickness="1" BorderBrush="#eeeeee" Height="200" Width="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#55a0c4">
<TextBlock Text="묘도대교 PY1 탑정부" Padding="6" Foreground="White"/>
</Border>
<Border Grid.Column="1" Background="White" Margin="0 0 0 0">
<Path Stroke="#55a0c4" StrokeThickness="1" Stretch="Fill" Margin="0 4 0 0">
<Path.Data>
<LineGeometry StartPoint="1,0" EndPoint="0,1" />
</Path.Data>
</Path>
</Border>
<Border Background="#55a0c4" Grid.Column="2" VerticalAlignment="Top" Height="5"/>
</Grid>
</Border>
</Grid>
上面的图片和代码由我实现,但是我不能仅在上面的空白处填写背景。我该怎么办?
您只需要一个不同的几何体。与其画一条线,不如画一个三角形。这将填满您想要的大部分区域。然后,您只需要包括一个矩形即可填充三角形上方的空间。这是您需要执行的代码版本:
<Border BorderThickness="1" BorderBrush="#eeeeee" Height="200" Width="300">
<Grid SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Background="#55a0c4">
<TextBlock Text="묘도대교 PY1 탑정부" Padding="6" Foreground="White"/>
</Border>
<Border Grid.Column="1" Background="White" Margin="0 0 0 0">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Path Fill="#55a0c4" Stretch="Fill" Margin="0 5 0 0" Data="M 0,0 H 1 L 0,1 Z"/>
<Rectangle Fill="#55a0c4" Height="5" HorizontalAlignment="Stretch" VerticalAlignment="Top"/>
</Grid>
</Border>
<Border Background="#55a0c4" Grid.Column="2" VerticalAlignment="Top" Height="5"/>
</Grid>
</Border>
看起来像这样:
请注意,我还添加SnapsToDevicePixels="True"
了父Grid
元素。这对于抑制会导致图形元素之间隐约出现间隙的抗锯齿是必要的。
我还使用“路径标记语法”来定义三角形,而不是Path
使用显式XAML元素构建对象的数据。我发现这更加简洁,即使有时不那么可读。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句