Visual Basic程序设计导学06.docx

上传人:b****6 文档编号:8460656 上传时间:2023-01-31 格式:DOCX 页数:31 大小:119.26KB
下载 相关 举报
Visual Basic程序设计导学06.docx_第1页
第1页 / 共31页
Visual Basic程序设计导学06.docx_第2页
第2页 / 共31页
Visual Basic程序设计导学06.docx_第3页
第3页 / 共31页
Visual Basic程序设计导学06.docx_第4页
第4页 / 共31页
Visual Basic程序设计导学06.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

Visual Basic程序设计导学06.docx

《Visual Basic程序设计导学06.docx》由会员分享,可在线阅读,更多相关《Visual Basic程序设计导学06.docx(31页珍藏版)》请在冰豆网上搜索。

Visual Basic程序设计导学06.docx

VisualBasic程序设计导学06

第6章图形程序设计

Windows本身就具有良好的图形用户界面(GUI),Windows下的应用程序的一个重要特色就是图形处理。

VB提供了非常灵活的图形功能。

不仅可以通过图形控件进行图形和绘图操作,还可以通过图形方法在窗体或图片框上输出文字和图形。

本章将主要介绍有关图形程序设计的基本知识与方法。

6.1图形显示与绘图控件

在VB中,进行图形处理主要有三种方式:

·显示已经存在的图形

·使用绘图控件绘制图形

·用绘图方法绘制图形

6.1.1显示图形文件

图形文件可在窗体、图片框控件和图像控件这三种对象上显示。

图形文件可来自各种绘图程序,VB支持.bmp,.dib,.ico,.cur,.wmf,.emf,.jpg和.gif等格式的图形文件。

·Bitmap(位图)将图像定义为点(像素)的图案。

位图的文件扩展名是.bmp或.dib,可用多种颜色深度(包括2,4,8,16,24和32位),视当前的显示设备而定。

例如,每像素8位(256色)的位图在每像素4位(16色)的设备上只能显示出16种颜色。

·Icon(图标)是特殊类型的位图。

图标的最大尺寸为32像素×32像素,但在Windows95下,图标也可为16×16像素大小。

图标的文件扩展名为.ico。

·Metafile(图元文件)将图形定义为编码的线段和图形。

普通图元文件扩展名为.wmf。

增强型图元文件扩展名为.emf。

·JPEG是一种支持8位和24位颜色的压缩位图格式。

它是Internet上一种流行的文件格式。

·GIF最初是由CompuServe开发的一种压缩位图格式。

它可支持多达256种的颜色,是Internet上一种流行的文件格式。

1.图形显示控件

VB中的图形显示控件有Image控件和PictureBox控件。

·Image控件

Image(图像)控件只能用于显示已有的图形。

显示图形时,可通过设置其Picture属性来实现,既可在设计时设置Picture属性,也可在程序中通过LoadPicture()函数设置Picture属性,还可使用剪切板对象的GetData方法设置Picture属性。

·PictureBox控件

与Image不同,它不但可使用各种绘图方法画图和显示已存在的图形,也可用Print方法输出文本,还可以放置其他的控件对象,故又有小窗体之称。

此外,在MDI(多文档界面)窗体上,它是惟一可以直接放置在MDI主窗体上的控件,其他的控件只能放置在它上面(一般用来设计工具栏,用于放置工具按钮图标)。

2.图形显示方法

在应用程序中,可根据需要采用不同方式把图形添加到窗体、图片框或图像控件中。

(1)设计时添加图形

设计时添加图形有两种方法:

·使用对象的Picture属性。

在“属性”窗口的属性列表中选择Picture,VB将弹出一个对话框,从中可选择图形文件并把它加载到窗体上、图片框中或图像控件中。

·使用剪贴板。

把图形从另一个应用程序(如Windows95的画笔)复制到剪贴板上,然后返回VB环境,把它粘贴到窗体或图片框或图像控件中。

(2)运行时添加图形

运行时添加图片有三种方法:

·使用LoadPicture函数加载图形文件。

使用LoadPicure函数可以加载指定的图形文件,并将该图形赋给对象的Picture属性。

在不指定文件名时它还可用来清除窗体、图像或图片框中的图形。

其使用格式如下:

objectname.Picture=LoadPicture("[filename]")

其中,objectname为控件或窗体的Name属性值。

Filename为要加载的图形文件名全称,包括驱动器和路径。

在任何需要的时候,都可加载一新图形到窗体上、图片框中或图像控件里,以更新已有的图形。

当没有指定filename即括号中的参数为空串("")时,将清除该对象所显示的图形。

·使用Picture属性在对象间相互复制。

图形一旦被加载或粘贴到窗体、图片框或图像控件以后,运行时就可把它赋值给另一窗体、图片框或图像控件。

例如,下列语句将把名为picDisplay图片框中的图形复制到名为imgDisplay的图像控件内:

imgDisplay.Picture=picDisplay.Picture

·从剪贴板对象复制图形。

如果剪贴板中存储有图形数据,则可使用下面的语句将剪贴板中的图形赋给窗体、图片框或图形控件对象的Picture属性:

objectname.Picture=ClipBoard.GetData([format%])

提示:

如果是在设计时从文件中加载或粘贴图形,则图形就和窗体一起被保存和加载,在创建.exe文件时,就不必把源图形文件提供给用户,因为.exe文件本身包含有它的图像。

如果要在运行时用LoadPicture函数加载图形,则必须把源图形文件和应用程序一起提供给用户。

【例6.1】设计一个图形浏览器窗体,浏览并显示指定目录下的所有图形文件。

首先创建一个工程文件,添加一个窗体Form1,在其上放置一个图片框Picture1、图像框Image1和一个文件列表框File1。

在设计阶段将Picture1对象的AutoSize属性设置为True,Appearance属性设置为“0-Flat”,而Image1的Stretch属性设置为True,并将File1对象的Path属性设置为“e:

\media”,Pattern属性设置为“*.bmp;*.ico;*.cur;*.jpg”并在该窗体上设计如下事件过程:

DimfilepathAsString

PrivateSubFile1_Click()

Picture1.Picture=LoadPicture(filepath+"\"+File1.FileName)

Image1.Picture=Picture1.Picture

Form1.Picture=Picture1.Picture

EndSub

PrivateSubForm_Load()

filepath="e:

\media"

File1.Path=filepath

EndSub

启动本工程,出现Form1窗体,在文件列表框中单击一个图形文件,在窗体上、右边图片框和图像框中立即显示对应的图形,窗体左上方和右上方的图片框显示是实际大小的图形,而右下方的图像框是拉伸后的图形。

图6.1显示的是HAPPY.BMP文件的图形。

图6.1Form1窗体的执行界面

在File1_Click()事件过程中使用了LoadPicture()函数和Picture属性加载用户选择的图形。

从加载同一幅图形到图片框和图像控件的结果可以看出,被加载的图形均是从对象的左上角开始放置,窗体中和图片框(由于其AutoSize属性设置为True)的图形是原始图形文件的大小,图像中的图形被放大了。

这是由于三种不同对象显示图形的过程有差异,各有自己的特点。

(1)窗体中显示的图形是原始的图形,图形大于窗体时,多余的部分被剪切掉,图形小于窗体时,窗体的其余部分无图形可显示。

(2)图片框的AutoSize属性。

在加载图形的单击事件过程中,图片框的AutoSize属性(逻辑数据类型)可控制图片框是否适应图形的大小,以便调整。

如果想让图片框能自动扩展到可容纳新图片的大小,可将该图片框的AutoSize属性设置为True。

这样,在运行时加载或复制图形到图片框时,系统会自动调整其大小,使其恰好能够显示整个图片,不留多余的空白区域。

本例中由于将AutoSize属性设置为True,故图片框大小根据加载后的图形自动进行了调整,与设计时的大小不一样。

(3)图像的Stretch属性用来控制图形与控件谁适应谁的问题。

若将该属性设置为True,则图像控件大小一定,图形大小随图像控件而调整。

当Stretch属性为False时,图像控件自动调整其大小以适应加载图形的要求。

6.1.2使用绘图控件

在控件对象中,线条和形状可用于在设计时直接绘制界面所需的直线或有形状的(矩形、圆、椭圆、圆角矩形)图形。

1.线条控件

线条控件用于在设计阶段往窗体上绘制直线。

该控件与后面要讲的Line方法不同,前者在设计阶段就可看到效果,而后者只能待程序运行后才能将绘制的直线显示出来。

线条控件的基本属性如下:

·BorderCo1or属性,设置直线的颜色,可在程序中使用颜色函数QColor()或RGB()。

·BorderStyle属性,设置直线的样式。

·BorderWidth属性,设置直线的宽度,单位为像素。

【例6.2】设计一个窗体用线条控件在窗体上绘制一个长方体图形,并根据用户输入的边长计算该立方体的体积。

2.形状控件

形状控件提供了一种在窗体上绘制图形的方法,它可绘制的图形包括矩形、圆、椭圆、圆角矩形。

尽管说窗体或图片框的Line方法、Circle方法也可用来绘制矩形和圆形,但它们都是用在程序代码中,而用形状控件绘制的图形是在程序设计阶段都可看到的,因此,在某些情况下,用此控件可方便地改善用户程序的应用界面。

此外,该控件还可给其他控件加上边框等。

形状控件的一个重要的属性是Shape,用来设置形状控件的形状。

除与线条形状控件相同的属性外,下面的常用属性用来控制绘制图形的外观:

·FillColor属性,设置绘制图形的填充色。

·FillStyle属性,设置绘制图形的填充模式。

在上述工程中添加窗体Form2,如图6.2所示。

窗体左边是一个图片框,在其中用线条控件绘制一个立方体,窗体右边是一个框架,在其中放置4个标签、4个文本框和一个命令按钮command1,并在该命令按钮上设计如下事件过程:

PrivateSubCommand1_Click()

Text4.Text=Text1.Text*Text2.Text*Text3.Text

EndSub

图6.2Form2窗体设计界面

将本窗体设置成启动对象,执行本工程,出现Form2窗体的屏幕,在三条边长文本框中分别输入5、6和4,单击“计算体积”命令按钮,在体积文本框中显示120,如图6.3所示。

图6.3计算体积

6.2绘图方法

前面我们介绍了使用直线、形状等控件直接绘图,但有时我们需要在程序运行时使用绘图方法绘图,这是我们本节所要讨论的主要内容。

使用控件绘图的优点如下:

·使用较少的系统资源,运行速度快。

·设计阶段可预览图形效果。

·较短的代码。

·适合于窗体内需要较少的直线与圆等情况。

使用方法绘图的优点如下:

·适合于窗体内需要较多的直线或圆的情况。

·各直线或圆可重叠交叉使用,用控件绘图无法重叠。

在VB中提供的绘图方法见表6.1。

表6.1绘图方法

方法

说明

Cls

清除所有图形和Print输出

Pset

设置各个像素的颜色

Point

返回指定点的颜色值

Line

画线、矩形或填充框

Circle

画圆、椭圆或圆弧

PaintPicture

在任意位置画出图形

注意:

Print方法也可认为是一种绘制图形方法,因为它的输出也是写在对象上,并像Set,Line和Circle方法一样,也要以内存图像的方式进行保存(如果AutoRedraw是打开的)。

在介绍绘图方法之前,首先看一下绘图使用的坐标系统。

6.2.1坐标系统

对象的坐标系统是绘制各种图形的基础,坐标系统选择的恰当与否直接影响着绘图的质量,也就是说同样的绘图命令,可能仅仅由于用户定义或选择的坐标系统的不同,而不能正确地在屏幕上显示或在打印机上打印出结果来,或者即使能显示或打印出来,由于比例不协调,也达不到预期效果。

因此,在绘制图形前,必须首先确定坐标系。

1.默认坐标系及度量单位

我们知道,显示器是以像素(分辨率)为度量单位的。

常见显示器的分辨率为640×480、800×600、1024×768,同样一幅图形,由于使用的显示器分辨率不同,所显示的效果就不同。

因此在传统的图形设计中,常根据显示器分辨率来确定绘制图形的大小。

在VB中,系统提供了7种标准规格的坐标度量单位和一个由用户自定义的度量单位。

·默认坐标系系统默认的对象坐标系是以对象左上角为坐标原点(0,0),以twips(缇)为度量单位。

需要说明的是,只能在窗体或图片框上绘制图形,窗体的容器是系统对象Screen(屏幕),而窗体对象坐标系是用来度量其中的控件或绘制图形时用的。

·度量单位VB中共有8种度量单位,如表6.2所列。

除系统默认的度量单位twips外,用户还可根据需要,选择系统提供的其他标准度量单位。

度量单位设置是由对象(窗体或图片框)的ScaleMode属性定义的。

可在属性窗口设置或在程序代码中读取或修改。

表6.2VB的度量单位

ScaleMode

说明

0

用户自定义类型。

如果用户使用ScaleWidth,ScaleHeight,ScaleTop,ScaleLeft设置坐标系统,VB会自动设置ScaleMode为0

1

twips,此为默认值(每英寸为144twips)

2

磅,1英寸=72个磅

3

像素

4

字符,字符的宽度=120twips,字符的高度=240twips

5

英寸

6

毫米

7

厘米

2.用户定义对象坐标系统

在窗体和图片框中,与绘图有关的属性见表6.3。

表6.3与绘图有关的属性

属性

功能

CurrentX,CurrentY

设置或返回当前光标位置(窗体、图片框当前光标不可见)相对于窗体或图片框左上角为原点(0,0)的坐标

Height,Width

设置或返回窗体或图片框的高度和宽度,单位由容器而定

ScaleHeight,ScaleWidth

设置或返回窗体、图片框内部宽度和高度等分份数,这里的宽度和高度是指除去边界或标题行后的净宽度和净高度。

即用户定义坐标的单位

Left,Top

设置或返回窗体或图片框左上角在容器中的坐标值

ScaleLeft,ScaleTop

用于设置或返回窗体、图片框左上角的坐标值

注意:

不论窗体或图片框实际的尺寸有多大,都可以等分成若干份,等分的份数越多,说明宽度(高度)单位越小,反之越大。

因此用户可根据绘制图形数据的大小、范围来等分窗体或图片框成若干份,使绘图数据位于由用户定义的坐标范围内。

(1)用ScaleLeft,ScaleTop,ScaleHeight,ScaleWidth设置坐标系统

ScaleLeft和ScaleTop属性用于设置对象左上角坐标;ScaleHeight属性和ScaleWidth属性用于设置窗体或图片框的净高度和净宽度。

例如,在窗体Form1上绘制图形时,需要设置窗体左上角坐标为(10,20),右下角坐标为(60,50),则可使用下面的代码:

Form1.ScaleWidth=50

Form1.ScaleHeight=30

Form1.ScaleTop=20

Form1.ScaleLeft=10

坐标原点在(0,0)处,该窗体的位置如图6.4所示。

30

50

20

10

(0,0)

 

图6.4窗体位置

一旦设置了上述四个属性,则对象四个角的坐标为:

左上角:

(ScaleLeft,ScaleTop)

右下角:

(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)

左下角:

(ScaleLeft,ScaleTop+ScaleHeight)

右上角:

(ScaleLeft+ScaleWidth,ScaleTop)

需说明的是,这四个属性的值也可以为负数。

例如,下面的代码可将窗体坐标原点定在左下角,向上和向右时坐标值增加,与平时所用坐标相似,右上角的坐标为(50,100),更符合于绘制各种曲线图的习惯。

ScaleLeft=20

ScaleTop=100

ScaleWidth=50

ScaleHeight=-100

例如,下面的代码可将坐标原点定在图片框Picture1的中心,其坐标位置如图6.5所示。

PrivateSubForm_Load()

Picture1.ScaleLeft=-15

Picture1.ScaleTop=-25

Picture1.ScaleWidth=30

Picture1.ScaleHeight=50

EndSub

(0,0)

(15,25)

X

(-15,-25)

(-15,25)

(15,-25)

Y

图6.5图片框位置

(2)用Scale方法定义坐标系统

Scale方法是用户定义对象坐标系统的实用方法,用它完全可以代替上面介绍的用ScaleTop,ScaleLeft,ScaleWidth,ScaleHeight属性定义坐标系统,且更方便。

使用此方法可直接定义对象的左上角坐标和右下角坐标值,一旦这两个角的坐标值确定,则另两个角坐标值也就定下来了。

Scale方法定义坐标系统格式如下:

[formname]|[pictureboxname].Scale[(x1,y1)-(x2,y2)]

其中(x1,y1)为左上角坐标,(x2,y2)为右下角坐标。

与上述四个属性对应关系为:

x1=ScaleLeft;y1=ScaleTop;x2=ScaleWidth+x1;y2=ScaleHeight+y1

当Scale后面不带参数时,使用默认的坐标系统,对象的左上角为原点(0,0)。

如绘制一曲线图,横坐标范围为2~15,纵坐标范围为0.5~1.5,则使用Scale方法,可定义窗体对象坐标系统:

Scale(0,2)-(20,0)。

6.2.2绘图方法

除了图形控件之外,VB还提供了一套绘图方法,它们适合于窗体和图片框。

1.PSet方法

PSet方法可以在窗体或图片框指定的位置用给定的色彩画一个“点”。

点的大小由对象的DrawWidth属性指定。

PSet方法的使用格式如下:

[formname]|pictureboxname.PSet[Step](x,y)[,color]

其中,(x,y)是画点的坐标。

color用来指定绘制点的颜色,数据类型为Long。

默认时,系统用对象的ForeColor属性值作为绘制点的颜色。

color参数还可用QBColor(),RGB()函数指定。

Step关键字是下一个画点位置相对于当前位置的偏移量的标记,即步长(水平、垂直两个方向,可正可负)。

(x,y)坐标值是相对于当前位置的偏移量。

【例6.3】设计一个窗体使用鼠标在其上任意绘制图形。

在本章工程中添加窗体Form3,其中不放置任何控件。

在该窗体上设计如下事件过程:

DimmouseAsBoolean'用于标识是否按下鼠标键

PrivateSubForm_Load()

mouse=False

Me.DrawWidth=2'设置绘制点的大小(宽度)

Me.ForeColor=vbRed'设置绘制点的颜色

EndSub

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

mouse=True

Me.PSet(X,Y)

EndSub

PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

IfmouseThenMe.PSet(X,Y)

EndSub

PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

mouse=False

EndSub

将Form3窗体设置为启动对象,运行本工程,出现Form3窗体的空白屏幕,按下鼠标键拖动时,出现连续拖过的轨迹线,当释放鼠标时,轨迹线终止。

图6.6是用鼠标绘制的“PSet”字样。

图6.6Form3窗体执行界面

2.Line方法

Line方法用于在窗体或图片框对象上画直线(斜线也是直线)和矩形。

(1)直线

绘制直线时,应给出起点和终点坐标。

Line方法使用格式如下:

objectname.Line[[Step](x1,y1)]-[Step](x2,y2)[,color]

其中,Step表示其后的坐标值使用的是相对偏移。

(x1,y1)是直线的起点坐标,若前面有Step,则表示(x1,y1)是相对于当前位置的偏移量;否则(x1,y1)是相对于原点(0,0)的偏移量。

若省略(x1,y1),则起点为当前坐标位置(CurrentX,CurrentY)。

(x2,y2)是直线的终点坐标,若前面有Step,则表示(x2,y2)是相对于(x1,y1)的偏移量,否则(x2,y2)是相对于原点的绝对坐标值。

color指定要画直线的颜色。

可以使用颜色代码或颜色函数。

省略时用对象的ForeColor属性指定的颜色绘制直线。

画直线时,也是使用DrawWidth属性指定直线的宽度,使用DrawStyle属性指定边线的样式,其取值如表6.4所列。

表6.4DrawStyle属性设置

常量

设置值

说明

vbSolid

0

实线,默认设置

vbDash

1

虚线

vbDot

2

点线

vbDashDot

3

点划线

vbDashDotDot

4

双点划线

vbInvisible

5

无线

vbInsideSolid

6

内实线

【例6.4】设计一个窗体,用户使用鼠标在窗体点击时绘制随机大小和颜色的五角星。

在本章工程中添加窗体Form4,其中不放置任何控件。

在该窗体上设计如下事件过程:

Constpi=3.14159

PrivateSubstar(xAsSingle)

Randomize

n=Int(Rnd*16)

colr=QBColor(n)

Line-Step(x*Sin(pi/10),-x*Cos(pi/10)),colr

Line-Step(x*Sin(pi/10),x*Cos(pi/10)),colr

Line-Step(-x*Cos(2*pi/10),-x*Sin(2*pi/10)),colr

Line-Step(x,0),colr

Line-Step(-x*Cos(2*pi/10),x*Sin(2*pi/10)),colr

EndSub

PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)

PSet(x,y)

star(Rnd*2000)

EndSub

其中使用star子过程绘制一颗五角星,以五角星的左下角为起点,依次向上、右下、左上、右上,最后回到左下角,每个角的角度为2π/10,利用三角函数可以得到顶点的相对坐标。

Rnd()是随机函数,Randomize语句与随机函数一起使用,使产生的数更趋于随机。

将Form4窗体设置为启动对象,运行本工程,出现Form4窗体的空白屏幕,多次按下鼠标键时

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1