vb.net 教程 5-11 线条样式

之前我谈过画线一般使用的是pen,填充使用brush
画的线有很多样式,这篇介绍一下线型的几个用法
注意此篇中的代码需要先引用 drawing2d
Imports System.Drawing.drawing2d

1、线帽样式,我们看到的带箭头的线就是
代码如下:
    Private Sub btnDraw_Click(sender As Object,e As EventArgs) Handles btnDrawCap.Click
        Dim g As Graphics = Me.CreateGraphics
        Dim p As New Pen(Color.Red,8)
        '几种主要的线帽
        Dim pCap() As LineCap = {LineCap.AnchorMask,LineCap.ArrowAnchor,LineCap.DiamondAnchor,LineCap.Flat,LineCap.Round,LineCap.Square,LineCap.SquareAnchor,LineCap.Triangle}

        For i As Integer = 0 To pCap.Length - 1
            '设置直线开始端线帽样式
            p.StartCap = pCap(i)
            '设置直线结束端线帽样式
            p.EndCap = pCap(pCap.Length - 1 - i)
            g.DrawLine(p,New Point(100,i * 30 + 20),New Point(300,i * 30 + 20))
        Next
    End Sub

2、自定义线帽样式
使用自定义线帽,先定义一个GraphicsPath
GraphicsPath包含了线帽图形,需要注意的是这个图形的坐标系跟我们所学习的不同,见下图:

定义一个CustomLineCap,注意 构造函数中的两个参数,
一个参数:自定义线帽填充内容的 GraphicsPath 对象。
第二个参数:自定义线帽轮廓的 GraphicsPath 对象。
上述两个参数不能同时使用,必须设置其中一个参数为nothing。如果均未向两个参数传递空值,则第一个参数将被忽略。
下面我们做个闪电形(W)的线帽:
    Private Sub btnCustom_Click(sender As Object,e As EventArgs) Handles btnCustom.Click
        Dim g As Graphics = Me.CreateGraphics
        Dim p As New Pen(Color.Red,4)

        '首先包含一个路径
        Dim capPath As New GraphicsPath()
        capPath.AddLine(New Point(0,0),New Point(-3,3))
        capPath.AddLine(New Point(-3,3),New Point(6,9))
        capPath.AddLine(New Point(6,9),15))
        capPath.AddLine(New Point(-3,15),21))
        '自定义线帽样式
        Dim pCap As New CustomLineCap(nothing,capPath)
        p.CustomEndCap = pCap

        g.DrawLine(p,100 + 260),100 + 260))
    End Sub

3、虚线样式,比如点划线
代码如下:
    Private Sub btnDraw_Click_1(sender As Object,e As EventArgs) Handles btnDraw.Click
        Dim g As Graphics = Me.CreateGraphics
        Dim p As New Pen(Color.Red,4)
        '几种点划线样式
        Dim pDash() As DashStyle = {DashStyle.Dot,DashStyle.DashDot,DashStyle.Dash}

        For i As Integer = 0 To pDash.Length - 1
            '设置点划线样式
            p.DashStyle = pDash(i)
            g.DrawLine(p,i * 30 + 260),i * 30 + 260))
        Next
    End Sub
当然,如前所述,不仅仅是画直线,其他图形如矩形、椭圆形等都可以:
    Private Sub btnDrawRec_Click(sender As Object,e As EventArgs) Handles btnDrawRec.Click
        Dim g As Graphics = Me.CreateGraphics
        Dim p As New Pen(Color.Red,2)
        p.DashStyle = DashStyle.DashDot
        g.DrawRectangle(p,New Rectangle(100,400,200,120))
    End Sub
运行时如下图:


由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看 vb.net 教程 目录

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...