在VB6中,画直线有两种途径
- line方法
- line控件
line方法,就是在代码中用line(x1,y1)-(x2,y2)直接画线
这种方式看似简单,但也容易出错
看链接,出现部分图形显示不出来的问题。其原因为:
“Line方法可以用来在窗体上绘制直线,但是如果窗体的AutoRedraw属性设置为False,则Line方法必须通过Refresh方法才能显示出来。”
链接中的问题,原因在于此。但是这个结论不能机械的套用,有不成立的时候。当然为了避免出问题,还是按照原则来写代码保险。
http://bbs.csdn.net/topics/390951343?page=1#post-398660676
line控件,比用label模拟直线好的多。它可以画斜线
比较其他VB6控件可以用move来移动,而line控件没有move,但可以用直线两个端点的两对(x,y)坐标设置,来改变(动态)位置、长短
Line控件应用
1. 功能
Line控件是图形控件,该控件主要用于修饰窗体和显示直线。可以在窗体或其他容器控件中画出水平线、垂直线或者对角线。
Line控件和Line方法都可以用来在窗体上绘制直线,但是如果窗体的AutoRedraw属性设置为False,则Line方法必须通过Refresh方法才能显示出来。而Line控件总是能够显示在窗体上,除非将Visible属性设置为False。
2. 属性
Line控件不具有Move方法,但是可以通过改变X1、X2,Y1,Y2属性来移动直线或者调整直线的大小。另外BorderStyle属性可以设置直线的样式, BorderWidth属性可以改变线条的粗细。
X1、X2,Y1,Y2属性返回或设置Line控件的起始点(X1,Y1)和终止点(X2,Y2)的坐标。水平坐标是X1和X2,垂直坐标是Y1和Y2。
语法:
object.X1 [= value]
object.Y1 [= value]
object.X2 [= value]
object.Y2 [= value]
object:对象表达式。
value:一个用来指定坐标的数值表达式。
示例:
运用X1、Y1、X2、Y2属性可以定位一条线段的位置,其中X1、Y1是起始点;X2、Y2是终止点,而X1和X2是水平坐标;Y1和Y2是垂直坐标。本示例实现的是在窗体启动的时候通过分别设置Line控件的X1、Y1、X2、Y2属性,来定位Line控件的位置,如图1所示。
图1 定义线段的位置
完整程序代码如下:
'画出两个固定坐标间的线
Private Sub Form_Load()
With Line1 '复用语句
.X1 = 700: .X2 = 1800: .Y1 = 1300: .Y2 = 600 '设置坐标
End With
End Sub
应用一:绘制正方形
实例说明
在多媒体教学中经常需要绘制几何图形,本实例演示的是动态地绘制一个正方形图案。运行程序,系统将自动绘制一个正方形,效果如图2所示。
思路与技术
通过在Timer控件中动态地控制Line控件的X1、Y1、X2和Y2属性来控制绘制正方形的各边长,实现动态绘制正方形的功能。
Line控件的X1、Y1、X2和Y2属性返回或设置Line控件的起始点(X1, Y1)和终止点(X2, Y2)的坐标。控件的水平坐标是X1和X2,垂直坐标是Y1和Y2。
语法格式如下:
object.X1 [= value]
object.Y1 [= value]
object.X2 [= value]
object.Y2 [= value]
参数说明:
Object 对象表达式。
Value 一个用来指定坐标的数值表达式。
开发步骤
(1)新建一个标准工程,创建一个新窗体。
(2)在窗体上添加4个Line控件,设置其Visible属性为False。
Form1窗体中控件部分属性设置如表1所示。
表1 Form1窗体中控件部分属性设置
| 控件名 | 属性 | 值 |
| Line | Name | Line1 |
|
| Visible | False |
| Line | Name | Line2 |
|
| Visible | False |
| Line | Name | Line3 |
|
| Visible | False |
| Line | Name | Line4 |
|
| Visible | False |
| Timer | Name | Timer1 |
(3)为Form1窗体添加如下代码。
'绘制正方形
Private Sub Timer1_Timer()
Line1.Visible = True 'Line1可见
Line1.x1 = 360 '设置Line1起点横坐标
Line1.y1 = 360 '设置Line1起点纵坐标
Line1.Y2 = 360 '设置Line1终点纵坐标
If Line1.X2 > 2280 Then '当Line1终点横坐标大于2280
Line2.Visible = True 'Line2可见
Line2.x1 = 2280 ' Line2的起点横坐标
Line2.X2 = 2280 ' Line2的起点横坐标
Line2.y1 = 360 ' Line2的终点纵坐标
If Line2.Y2 > 2280 Then '当Line2终点纵坐标大于2280
Line3.Visible = True 'Line3可见
Line3.x1 = 2280 '设置Line3起点横坐标
Line3.y1 = 2280 '设置Line3起点纵坐标
Line3.Y2 = 2280 '设置Line3终点纵坐标
If Line3.X2 < 360 Then '当Line2终点横坐标小于360
Line4.Visible = True 'Line4可见
Line4.x1 = 360 'Line4起点横坐标
Line4.Y2 = 2280 ''Line4终点纵坐标
If Line4.y1 <= 360 Then 'Line4终点纵坐标小于等于360
Timer1.Enabled = False 'Timer停用
Else
Line4.y1 = Line4.y1 – 20 'Line4的终点纵坐标减20
End If
Else
Line3.X2 = Line3.X2 - 20 'Line3的起点横坐标减20
End If
Else
Line2.Y2 = Line2.Y2 + 20 'Line2的终点纵坐标加20
End If
Else
Line1.X2 = Line1.X2 + 20 'Line1的终点横坐标加20
End If
End Sub
应用二:利用Line控件设计分割线
在进行窗体设计时,经常使用Frame控件来将信息分门别类,这里介绍利用2个Line控件设计的分隔线,将两个Line控件设置为不同的颜色,显示时错开一些位置。
最终效果如图3所示。
程序代码如下: ★★★★★ Form1 ★★★★★★
设计分割线
Private Sub Form_Load()
With Line1 '复用语句
.BorderColor = &H808080 '设置Line1的背景颜色
.x1 = 0: .X2 = 5000 '设置Line1的起点和终点的横坐标
.y1 = 1100: .Y2 = 1100 '设置Line1的起点和终点的纵坐标
End With
With Line2 '复用语句
.BorderColor = vbWhite '设置Line2的背景颜色为白色
.BorderWidth = 2 '设置边框宽度
.x1 = Line1.x1: .X2 = Line1.X2 '设置Line2的起点和终点横坐标与Line1相同
'设置Line2的起点和终点纵坐标
.y1 = Line1.y1 + 20: .Y2 = Line1.y1 + 20
End With
Line1.ZOrder 0 '置于图层前端
End Sub
应用三:在运行中改动line控件
在运行中可以改动控件,而line控件没有move过程来移动它。但是可以通过改变它的x1,y1,x2,y2属性来移动或变换它的尺寸。
举例:在窗体中以任意长短和位置添加四个line控件,并用控件数组lineControl(0)到lineControl(3)表示。当用户单击command1时,循环地遍历这四条线并使它们呈水平排列。
Private Sub Command1_Click()
Dim intLoopIndex As Integer
For intLoopIndex = 0 To 3
LineCONTROL(intLoopIndex).X1 = 1000
LineCONTROL(intLoopIndex).X2 = 3500
LineCONTROL(intLoopIndex).Y1 = 1000 + 100 * intLoopIndex
LineCONTROL(intLoopIndex).Y2 = LineCONTROL(intLoopIndex).Y1
Next
End Sub
本文详细介绍了VB6中画直线的两种方式——Line方法和Line控件。Line方法在AutoRedraw属性设为False时,需要通过Refresh方法显示。Line控件能画斜线且可以通过修改坐标改变位置,适用于动态调整。文中还提供了Line控件的应用示例,包括绘制正方形和设计分割线等。

1万+

被折叠的 条评论
为什么被折叠?



