wpf - 我想实现它,如图所示。(在 WPF 中绘制对角线)
问题描述
我想像上图那样实现它。
<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 元素构建对象的数据。我发现这更简洁,如果有时不那么可读。
推荐阅读
- voip - 呼叫套件来电未在 Testflight 构建中触发
- java - 使用流填充倍数列表
- python - 在 Keras 中嵌入预训练模型的问题
- amazon-s3 - 使用 Spark(EMR 集群)调用 Sagemaker 端点
- python - 我们可以使用不同的数据库来运行 pytest 吗?
- php - 使用 php 从字符串中删除 \uXXXX 格式的表情符号
- linux - 在任何 Unix Shell 上,“--”和“-”是什么意思?
- maven - 在微服务之间共享 DTO
- python - self 在这个 Distribution 类中做了什么?
- c++ - 我怎么能用winsock2用c++做https请求