虚线
虚线,实际上是指通过实线和空格组成的一系列点集。在WPF中主要有两种设置方式,线条组件、画笔样式。
线条
WPF 中,线条由Line 组件展示。其中通过设置属性“StrokeDashArray” 可以实现虚线的样式,“StrokeDashCap”设置每小段线条的线头样式,“StrokeDashOffset” 设置短线开始的距离,可以理解为偏移。
在线条组件上设置虚线
StrokeDashArray 主要是设置了实线和空格的长度大小,按两位一组控制。
例:
StrokeDashArray=“2,2” 表示 2个笔宽大小的实线,后接2个宽度大小的虚线。
代码片
.
// An highlighted block
<DockPanel>
<TextBlock Margin="0 0 10 0" MinWidth="85" TextAlignment="Right"><Run Text="Line: 2,2"/></TextBlock>
<Line Margin="0 5" X1="10" X2="495" StrokeThickness="10" Stroke="Gray" StrokeDashArray="2,2"/>
</DockPanel>
<DockPanel>
<TextBlock Margin="0 0 10 0" MinWidth="85" TextAlignment="Right"><Run Text="Line:1,1"/></TextBlock>
<Line Margin="0 5" X1="10" X2="495" StrokeThickness="10" Stroke="Gray" StrokeDashArray="1,1"/>
</DockPanel>
<DockPanel>
<TextBlock Margin="0 0 10 0" MinWidth="85" TextAlignment="Right"><Run Text="Line:2,0"/></TextBlock>
<Line Margin="0 5" X1="10" X2="495" StrokeThickness="10" Stroke="Gray" StrokeDashArray="2,0"/>
</DockPanel>
<DockPanel>
<TextBlock Margin="0 0 10 0" MinWidth="85" TextAlignment="Right"><Run Text="Line:2,2,0,2"/></TextBlock>
<Line Margin="0 5" X1="10" X2="495" StrokeThickness="10" Stroke="Gray" StrokeDashArray="2,2,0,2"/>
</DockPanel>
<DockPanel>
<TextBlock Margin="0 0 10 0" MinWidth="85" TextAlignment="Right"><Run Text="Line:2,2,0,2,0,2"/></TextBlock>
<Line Margin="0 5" X1="10" X2="495" StrokeThickness="10" Stroke="Gray" StrokeDashArray="2,2,0,2,0,2"/>
</DockPanel>
画笔
画笔(Pen)为自定义图形时使用频率较高,配合画刷可以实现任意图形。画笔主要通过设置DashStyle实现呈现图形的虚线,可使用系统预置的5款基本样式,也可以自己设置基本样式。
系统样式
预置样式 | 描述 | 同Line设置 |
---|---|---|
Dash | '宽线条' | (2,2) |
DashDot | 宽线条, 点 | (2,1,1,1) |
DashDotDot | 宽线条, 点,点 | (3,1,1,1,1,1) |
Dot | 点 | (1,1) |
Solid | 直线 | – ----- |
自定义样式
通过新建DashStyle,设置列表集合Dashes的值,实现虚线。
例:
// An highlighted block
Pen pen = new Pen()
{
DashStyle = new DashStyle()
{
Dashes = new DoubleCollection() { 0,2},
},
Thickness = ActualHeight / 2,
Brush = Brushes.Black,
};
Dashes中的数据同样按两个一组设置虚线的样式,只是其中的两个值和Line中代表的意义不同。设置每组的数据为{i,x},最终呈现的图形样式如下:
1、每个分段的长度为:i + x 个笔宽。
2、实线部分长度:i+1 个笔宽。