如何画虚线

来源:互联网 发布:上传淘宝图片不清楚 编辑:程序博客网 时间:2024/04/28 01:19

System.Windows.Shapes.Line 类提供了创建图形“线”的构造方式。默认情况下是实线,如何构造虚线呢?

下面是动态创建虚线的代码:

            var canvas = new Canvas { Height = _height + _top + _top, Width = AppInfo.DesignWidth - _left - _left };

            var line = new Line() //虚线
            {
                Stroke = new SolidColorBrush(Colors.Black),
                StrokeThickness = 1,
                StrokeDashCap = PenLineCap.Flat,
                StrokeDashOffset = 6,
                StrokeDashArray = {0.25, 1.0, 0.75, 1.0}, //{5.0, 2.0, 3.0, 2.0},
                X1 = 0,
                X2 = canvas.Width,
                Y1 = 6,
                Y2 = 6
            };

            Canvas.SetLeft(line, 0);
            Canvas.SetTop(line, canvas.Height - _top);
            canvas.Children.Add(line);

解释一下这几个参数的意思:

StrokeThickness  : 笔画轮廓的宽度,即线宽。

StrokeDashArray : 虚线样式受到StrokeDashArray 影响。这些值用于勾勒形状轮廓的虚线和间隙样式。

StrokeDashArray 参数采用 S[,G][,S*,G**]* 的形式,其中:

S:笔画的长度的值;G:间隙的长度的值。如果忽略了G,则间隙长度与前一个笔画长度相同。

如:如果线宽=1的话,“2”表示2个像素的实线和2个像素的空白组成的虚线。 “3,2”表示3个像素的实线和2个像素的空白组成的虚线。

       “2,2,3,2”表示 2个像素的实线和2个像素的空白 +  3个像素的实线和2个像素的空白 (如此反复)组成的虚线。

       要注意到实际实线和空白间隔像素还受线宽的影响。

X1  Y1  X2  Y2:起点点(X1,Y1),终点点(X2,Y2),可以是水平、垂直或者是斜线。这里Y1=Y2=6是水平线,并且有6个像素的相对高度。即:

Line在Canvas中的实际高度是:canvas.Height - _top + Y1。


使用xaml:

<Line Height="60" HorizontalAlignment="Left" Margin="0,356,0,0" Name="line1" Stroke="Black" StrokeThickness="3" VerticalAlignment="Top" Width="468" 
              X1="0" Y1="50" X2="480" Y2="10" StrokeDashCap="Round" StrokeDashArray="4" />

效果:







原创粉丝点击