line控件和方法

来源:互联网 发布:算法4和算法导论哪个好 编辑:程序博客网 时间:2024/06/16 19:29

在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

 

 

0 0
原创粉丝点击