《Visual Basic程序设计》课件1第10章_第1页
《Visual Basic程序设计》课件1第10章_第2页
《Visual Basic程序设计》课件1第10章_第3页
《Visual Basic程序设计》课件1第10章_第4页
《Visual Basic程序设计》课件1第10章_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*第10章图形操作10.1图形操作基础

10.2与绘图有关的属性

10.3图形控件

10.4图形方法

10.5PaintPicture方法

习题

10.1图形操作基础

10.1.1图形的坐标系统

在VB中,每个对象定位于存放它的容器内,使用的是容器的坐标系统,对象的Left、Top属性指示了相对于容器左侧、顶部的距离。例如,窗体处于屏幕(Screen)内,屏幕是窗体的容器。在窗体内绘制控件,窗体就是容器。如果在图片框内绘制图形或控件,该图片框就是容器。对象位置及大小只能在容器界定的范围内变动。当移动容器时,容器内的对象也随着一起移动,而且与容器的相对位置保持不变。每个容器都有一个坐标系统。构成一个坐标系统需要三个要素:坐标原点、坐标度量单位、坐标轴的长度与方向。容器的ScaleLeft、ScaleTop属性用于控制容器对象左边和顶端的坐标,这两个属性值指定了该容器对象坐标系统的坐标原点。所有容器对象的ScaleTop、ScaleLeft值默认为0,坐标原点在容器的左上角。

容器的ScaleHeight、ScaleWidth属性确定对象内部垂直方向和水平方向的大小,这个数值与所用的度量单位有关。度量单位不同,ScaleHeight、ScaleWidth属性值也不同。

属性ScaleMode决定对象坐标的度量单位,共有11种设置。表10-1所示为ScaleMode属性常用的8种设置。表10-1ScaleMode常用属性设置

ScaleMode属性默认时为Twip(中文译为缇)。每英寸为1440缇,20个缇为1磅(Point)。这一度量单位规定的是对象打印时的大小,屏幕上的实际物理距离因显示器分辨率而异,普通VGA显示器在800 × 600模式下,最大窗体尺寸约为12 000 × 8700缇。

改变容器对象的ScaleMode属性设置,不会改变容器的大小和它在屏幕上的位置,只是改变了容器对象的度量单位。VB会重新定义对象的ScaleHeight和ScaleWidth属性,以便使它们与新刻度保持一致。

窗体的Height属性由ScaleHeight、标题栏高度和水平边框高度组成;同样,其Width属性值由ScaleWidth和垂直边框宽度组成。窗体实际可用高度和宽度由ScaleHeight和ScaleWidth确定。10.1.2自定义坐标系统

容器对象的默认坐标系统对绘制控件不会有什么影响,但对作图就有较大的影响。因为平时我们习惯的坐标原点在中心(这是指数学上的),所以常需要对坐标原点进行重新设置。Scale方法是建立用户坐标系统最方便的方法。其语法是:

[对象.]Scale[(xLeft,yTop)-(xRight,yBottom)]

例10-1

定义一个坐标系统,其坐标原点为(0,0),即原点在窗体的中央位置,如图10-1所示。图10-1自定义坐标系统程序代码如下:

PrivateSubForm_click()

Me.Scale(-100,100)-(100,-100)

'定义坐标系统让窗体左上角坐标为(-100,100),右下角为(100,-100)

Line(-100,0)-(100,0)'画横坐标

Line(0,100)-(0,-100)'画纵坐标

EndSub

代码写在窗体的Click事件中,运行后,单击窗体即可。 10.2与绘图有关的属性

10.2.1CurrentX和CurrentY

窗体、图片框或打印机的CurrentX和CurrentY属性给出了这些对象在绘图时的当前坐标。这两个属性只能在程序中使用。当坐标系确定后,常用这两个属性来指定一个坐标点,然后在这个点上输出内容。当使用Cls方法后,CurrentX和CurrentY的值为坐标原点,不论这个坐标原点在对象中什么位置。

例10-2

用Print方法在窗体上随机打印100个五角星“☆”。

程序代码如下:程序运行效果如图10-2所示。图10-2当前坐标演示效果10.2.2DrawWidth和DrawStyle

窗体、图片框或打印机的DrawWidth属性给出在这些对象上所画线条的宽度或点的大小,DrawStyle属性给出在这些对象上所画线条的线型。DrawWidth以像素为单位,最小为1,默认值也为1。DrawStyle属性设置及意义如表10-2所示。表10-2DrawStyle属性设置10.2.3FillStyle和FillColor

封闭图形的填充方式由FillStyle和FillColor这两个属性决定。FillColor指定填充图案的颜色,默认与ForeColor(控件的前景色)相同。表10-3所示为FillStyle指定填充的8种图案。表10-3FillStyle属性设置

1.RGB函数

RGB函数通过红、绿、蓝三基色混合产生某种颜色,其语法为:

RGB(红,绿,蓝)

2. QBColor函数

QBColor函数采用QuickBasic所使用的16种颜色,其语法格式为:

QBColor(颜色码)

颜色码的取值范围及含义见表10-4。表10-4颜色码与颜色对应表10.2.4AutoRedraw

AutoRedraw属性对于使用各种图形方法很重要。在窗体对象或图片框中,如果AutoRedraw属性值为True,则当对象调整大小或被其他对象遮盖后,原来所画的内容将被重新显示出来;反之,则不会显示出来。AutoRedraw默认值为False。当需要保存窗体对象或图片框上所绘制的图形时,其AutoRedraw属性值必须为True。

读者可以做一个简单的测试,在一个窗体上用Print方法输出一些内容,当AutoRedraw值为False时,将这个窗体最小化后再恢复,窗体上的内容全部看不见;当AutoRedraw值为True时,无论这个窗体的大小如何变化,只要恢复到原来大小,原有的内容会全部重新显示出来。 10.3图形控件

10.3.1PictureBox控件

PictureBox控件在前面章节作为其他控件的容器已经有了多次应用,该控件主要用来显示图片。显示图片时,Picture属性设置为被显示的图片文件名(含路径名)。在程序运行时可以使用LoadPicture()函数在图片框中装入图片。

PictureBox控件不提供滚动条,也不能伸展被装入的图片以适应控件尺寸,但可用PictureBox的AutoSize属性调整PictureBox的大小以适应图片尺寸。当AutoSize设置为True时,PictureBox能自动调整大小与显示的图片匹配;当AutoSize设置为False时,PictureBox不能改变大小,当图片比控件大时,超过部分将被截掉。10.3.2Image控件

在窗体上使用Image控件的步骤与使用PictureBox相同,但前者比后者占用更少的内存,速度更快。二者的区别是Image不能用作容器。

Image没有AutoSize属性,但有Stretch属性。当Stretch设置为True时,加载的图片可自动调整大小以适应Image的大小(有可能失真);当Stretch设置为False时,Image会自动改变大小以适应加载的图片。10.3.3Line控件

Line控件可以用来画线。Line控件的主要属性是BorderWidth和BorderStyle,分别控制画线的宽度和线型,运行时的主要属性是所画线条的两个端点坐标(x1,y1)和(x2,y2),分别控制线条的起点和终点。

10.3.4Shape控件

Shape控件可以用来画矩形、正方形、椭圆、圆、圆角矩形及圆角正方形。当Shape控件放到窗体时显示为一个矩形,通过Shape属性可确定所需要的几何形状。FillStyle属性为Shape指定填充图案,也可用FillColor属性为Shape着色。10.3.5图形文件的保存

对于绘制或加载在窗体、Image和PictureBox内的图形,可以使用SavePicture命令把图形以文件的形式保存到磁盘中。命令格式为:

SavePicture对象名.属性,"文件名" 10.4图形方法

10.4.1Line方法

Line方法用于在指定对象上画直线或矩形。其语法格式如下:

对象.Line[Step](x1,y1)-[Step](x2,y2),[颜色],[B][F]

例10-3

用Line方法在窗体上画出一组随机直线,第一条线从窗体中心开始,终点随机产生,以后每一条线均从上一条线的终点开始,线条颜色也随机产生。

分析:本题可以先确定坐标系统,将窗体中心定为原点,终点及线条颜色由随机函数产生。为了看清楚产生过程,本题用计时器来定时画线,单击窗体则停止。

程序代码如下:

PrivateSubForm_Click()

Timer1.Enabled=False

EndSub

PrivateSubForm_Load()

Scale(100,100)-(0,0) '设置坐标系统图10-3例10-3运行结果10.4.2Circle方法

Circle方法用于画圆、椭圆、圆弧和扇形。其语法格式如下:

对象.Circle[[Step](x,y),半径[,颜色][,起始角][,终止角][,横纵轴比率]]

例10-4

以下代码可分别画出圆、扇形、椭圆及圆弧。图10-4例10-4运行结果10.4.3Pset方法

Pset方法用于在窗体、图片框或打印机对象上指定的位置画点。其语法格式如下:

对象.Pset[Step](x,y)[,颜色]

例10-5

建立一个坐标系并绘制函数f(x) = sin(x)在(-360,360)之间的图形。

分析:先定义坐标系,本例将坐标原点定义在一个PictureBox的中心,PictureBox的左上角坐标为(-360,1),右下角坐标为(360,-1)。

程序代码如下:程序运行结果如图10-5所示。图10-5例10-5运行结果10.4.4Point方法

Point方法用于返回窗体或图片框上指定点的RGB颜色。其语法格式为:

对象.Point(x,y)

例10-6

用Point方法获取一个区域的信息并用Pset方法画在另一个区域。

分析:在一个窗体上画出两个图片框,Picture2的高和宽均是Picture1的2倍,但二者的坐标系统设置相同。先在Picture1中用Print输出几个字符,再将Picture1中各点颜色逐个取出,画到Picture2中。那么,在Picture2中得到的字符长和宽均将是Picture1中字符长宽的2倍。

程序代码如下:图10-6例10-6运行结果

10.5PaintPicture方法

处理图像除了应用Pset方法和Point方法外,还可以使用PaintPicture方法,而且后者更加方便。

Windows提供了移动位图块的功能,VB通过PaintPicture方法可实现从一个窗体或图片框控件中向另一个对象复制一个矩形区域的像素。

PaintPicture方法的语法如下:

目标对象.PaintPicturepicture,x1,y1,Width1,Height1,x2,y2,Width2,Height2,Opcode10.5.1位图的复制

如果要将图片框1(Picture1)中的位图按原大小复制到图片框2(Picture2)中,命令如下:

Picture2.PaintPicturePicture1.Picture,0,0

如果仅复制其中的一部分,则指定起点坐标及高度、宽度即可。当然,坐标系应定义成一样。

10.5.2位图的翻转

位图的翻转只需改变传送源或目标区域的定位坐标。如果设置图形宽度为负数,则水平翻转图形;如果设置图形高度为负数,则上下翻转图形;若将宽度和高度都设为负数,则两个方向同时翻转图形。10.5.3位图的缩放

只要改变目标图形的高度和宽度就可实现位图的缩放。

例10-7

对图片框中图像进行各种翻转及缩小操作。

程序运行界面如图10-7所示。图中包括2个图片框(Picture1、Picture2)和4个命令按钮(命令按钮为数组,下标从0~3,完成的功能如其标题)。图片框的AutoSize属性为True,在属性窗口中为Picture1加上图片。图10-7例10-7运行界面10.5.4位图的旋转

要旋转位图需要对原始图片按行和列的顺序或按列和行的顺序读取像素点,然后在目标图形区颠倒行和列的顺序后复制像素点,这需要费一点时间。当然用Pset和Point方法配合也能完成。以下程序可以将P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论