21世纪高等学校计算机基础教育系列教材 第1章图形处理和多 媒体编程
第11章 图形处理和多 媒体编程 •人民邮电出版社 21世纪高等学校计算机基础教育系列教材
第11章图形与图像 属性设 单位 Visual basic中,每个对象都一个相置值 对其容器的坐标,也就是说,每个对 0用户定义(user) 象都是存在于一个容器中的,例如 窗体的容器是整个屏幕,而窗体中的 1|Twip(缺省值) 每个控件的容器就是这个窗体或者是 窗体中的某个容器控件(如图形框 2 Point(磅) 等)。对于每一个容器来说,都需要 3 Pixel(像素点) 有一个坐标系,在中学数学中讲过 构成一个坐标系需要有以下三个要素 4 Character(字符) 坐标原点,坐标度量单位,坐标轴的 5Inch(英寸) 长度与单位。坐标度量单位由容器的 Scalemode属性决定, Scale mode属性 6 Millimeter(毫米) 设置如表所示 7 Centimeter(厘米)
第11章 图形与图像 坐标系统 Visual Basic中,每个对象都一个相 对其容器的坐标,也就是说,每个对 象都是存在于一个容器中的,例如, 窗体的容器是整个屏幕,而窗体中的 每个控件的容器就是这个窗体或者是 窗体中的某个容器控件(如图形框 等)。对于每一个容器来说,都需要 有一个坐标系,在中学数学中讲过: 构成一个坐标系需要有以下三个要素: 坐标原点,坐标度量单位,坐标轴的 长度与单位。坐标度量单位由容器的 ScaleMode属性决定,ScaleMode属性 设置如表所示 属性设 置值 单 位 0 用户定义(user) 1 Twip (缺省值) 2 Point(磅) 3 Pixel(像素点) 4 Character(字符) 5 Inch(英寸) 6 Millimeter(毫米) 7 Centimeter(厘米)
第11章图形与图像 自定义坐标系 用户可以通过以下两种方法来自行定义坐标系统。其中 方法一: 通过对象的 ScaleTop, Scalelefi, ScaleHeight, Scale width四个 属性来改变: ( ScaleTop, Scaleleft)的值用来设置控件对象的的左上角坐 标,在默认情况下,这个属性的值均为0,当这两个属性的值发 生改变后,坐标系的x轴和y轴都将平移形成新的坐标系。 重定义坐标系的第二种方法:采用 Scale方法来设置坐标 系。 Scale方法是建立用户坐标系的一种方便的方法。语法结构 如下 Object Scale(xl, y1)-(x2, y2)
自定义坐标系统 用户可以通过以下两种方法来自行定义坐标系统。其中 方法一: 通过对象的ScaleTop,ScaleLeft,ScaleHeight,ScaleWidth四个 属性来改变: (ScaleTop,ScaleLeft)的值用来设置控件对象的的左上角坐 标,在默认情况下,这个属性的值均为0,当这两个属性的值发 生改变后,坐标系的x轴和y轴都将平移形成新的坐标系。 重定义坐标系的第二种方法:采用Scale方法来设置坐标 系。Scale方法是建立用户坐标系的一种方便的方法。语法结构 如下: Object.Scale (x1, y1) - (x2, y2) 第11章 图形与图像
第11章图形与图像 当前坐标( Currentx, Currenty属性) 2.线条的粗细( Draw Width属性) 3.线条类型( DrawStyle,属性) 4.填充类型( FillStyle,属性) 使用颜色 1.使用系统中的常量来表示。 这种方法就是使用系统所提供的几种颜色常量,如 BREd, AGReen等,这种方法表 示的颜色种类比较少,所以不能满足 Visual basic绘图的需要。 2.使用RGB()函数 这是一种能够表示224种颜色方法,这个函数的使用语法如下:RGB(R,G,B) R,G,B三个参数的取值范围为0,255共有256个值。所以可以表示的颜色的种类 为256*256*256种。但是计算机能够显示的颜色的种类要受到计算机的显示适配器 的限制 3.使用 QBColor()函数 这种方法也只能产生16种颜色,就是采用 Quick Basic所提供的16种颜色,该函数的语 法如下所示: QBColor(n)n的取值范围是:[0,15]
绘图属性 1. 当前坐标(CurrentX,CurrentY属性) 2. 线条的粗细(DrawWidth属性) 3. 线条类型(DrawStyle属性) 4. 填充类型(FillStyle属性) 5. 使用颜色 1. 使用系统中的常量来表示。 这种方法就是使用系统所提供的几种颜色常量,如VBRed,VBGreen等,这种方法表 示的颜色种类比较少,所以不能满足Visual Basic绘图的需要。 2. 使用RGB()函数 这是一种能够表示224种颜色方法,这个函数的使用语法如下:RGB(R,G,B) R,G,B三个参数的取值范围为[0,255]共有256个值。所以可以表示的颜色的种类 为256*256*256种。但是计算机能够显示的颜色的种类要受到计算机的显示适配器 的限制。 3. 使用QBColor()函数 这种方法也只能产生16种颜色,就是采用QuickBasic所提供的16种颜色,该函数的语 法如下所示:QBColor(n)n的取值范围是:[0,15] 第11章 图形与图像
1.Line方法 Line方法的作用是在对象上画直线和矩形。它的语法格式如下所示: Object Line[Stepl(xl, 1)Stepl(x2, y2), Colorl, BIFI 2 Circle方法 在对象上画圆、椭圆或弧。这种方法的语法是: Object. Circle[Stepl (x, Y), Radius, Color, Start, End, Aspect 3PSet方法 将对象上的点设置为指定颜色。这种方法的语法为: Object PSet (Stepl(x, y), I Colorl 4 Point方法 按照长整数,返回在Form或 Picture Box上所指定磅的红绿蓝(RGB)颜色。不 支持命名参数。其语法如下 Object Point(x, y) 5 Paintpicture方法 用以在Form, PictureBox或 Printer上绘制图形文件 (bmp、wmf、,emf、cur、ico或.dib)的内容。不支持命名参数。其语法格 式如下: Object PaintPicture picture, xl, yl, widthl, height1, x2, y2, width2, height2, opcode
图形方法 1. Line 方法 Line 方法的作用是在对象上画直线和矩形。它的语法格式如下所示: Object.Line [Step] (x1, 1) [Step] (x2, y2), [Color], [B][F] 2.Circle 方法 在对象上画圆、椭圆或弧。这种方法的语法是: Object.Circle [Step] (X, Y), Radius, [Color, Start, End, Aspect] 3.PSet 方法 将对象上的点设置为指定颜色。这种方法的语法为: Object.PSet [Step] (x, y), [Color] 4.Point 方法 按照长整数,返回在Form 或 PictureBox 上所指定磅的红-绿-蓝(RGB) 颜色。不 支持命名参数。其语法如下: Object.Point(x, y) 5.PaintPicture 方法 用以在Form, PictureBox 或 Printer 上绘制图形文件 (.bmp、.wmf、.emf、.cur、.ico或.dib)的内容。不支持命名参数。其语法格 式如下: Object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode
用釆一白叶窗的形式显示图像的万法,可以实现横同和纵同的显示 ‘横向扫描图像 Private Sub Command1 Click 设计步骤: On Error resume next Picture2 CIs 在窗体中创建两个大 Dim cstep, 1, cnum As Long 小相同的图片框 Picture2 Width= Picture1 Width picturebox),分别命 Picturel. Height- Picture l Height cstep=20 名为 picture cnum=Picture1 Scale Width/cstep 和 picture2,其中 picture For i=0 To cnum Step 2 Picture2 PaintPicture Picture1, i* cstep, 0, cstep, Picture 1. Height 图片 picture属性要指定 cstep, 0, cStep, Picture1 Height, VBSrcCopy 缩小窗体的宽度,使得 Forj=0 To 50000 picture不可见,然后创 建三个按钮,分别为 lext 1 command 1、 command2 For i=I To cnum Step 2 和 command3 Picture2 PaintPicture Picture1, i*cstep, 0, cstep, Picture 1. Heigh cstep, 0, cstep, Picture l Height, VBSrcCopy Forj=0To 50000 ext 1
设计步骤: 1. 在窗体中创建两个大 小相同的图片框 (picturebox),分别命 名为picture1 和picture2,其中picture1 的图片picture属性要指定, 缩小窗体的宽度,使得 picture1不可见,然后创 建三个按钮,分别为 command1、command2 和 command3 用来一百叶窗的形式显示图像的方法,可以实现横向和纵向的显示。 ‘横向扫描图像 Private Sub Command1_Click() On Error Resume Next Picture2.Cls Dim cstep, i, cnum As Long Picture2.Width = Picture1.Width Picture1.Height = Picture1.Height cstep = 20 cnum = Picture1.ScaleWidth / cstep For i = 0 To cnum Step 2 Picture2.PaintPicture Picture1, i * cstep, 0, cstep, Picture1.Height, _ i * cstep, 0, cstep, Picture1.Height, VBSrcCopy For j = 0 To 50000 Next j Next i For i = 1 To cnum Step 2 Picture2.PaintPicture Picture1, i * cstep, 0, cstep, Picture1.Height, _ i * cstep, 0, cstep, Picture1.Height, VBSrcCopy For j = 0 To 50000 Next j Next i End Sub
纵向扫描图像 Private Sub Command2 Click On Error resume next Picture2 CIs Dim cstep, 1, cnum As Long Picture2 Width= Picture1 Width Picturel. Height- Picture l Height cstep=20 cnum=Picture l ScaleHeight/cstep For i=0 To cnum Step 2 Picture2 PaintPicture Picture1,, i*cstep, Picture1 Width, cstep, 0 i*cStep, Picture l Width, cstep, VBSrcCopy Forj=0 To 50000 Next ext 1 For i=I To cnum Step 2 Picture2 PaintPicture Picture1,, 1*cstep, Picture1 Width, cstep, O 1*cStep, Picturel Width, cstep, VBSrcCopy For j=0 To 50000 Next End Sub
‘纵向扫描图像 Private Sub Command2_Click() On Error Resume Next Picture2.Cls Dim cstep, i, cnum As Long Picture2.Width = Picture1.Width Picture1.Height = Picture1.Height cstep = 20 cnum = Picture1.ScaleHeight / cstep For i = 0 To cnum Step 2 Picture2.PaintPicture Picture1, 0, i * cstep, Picture1.Width, cstep, 0,_ i * cstep, Picture1.Width, cstep, VBSrcCopy For j = 0 To 50000 Next j Next i For i = 1 To cnum Step 2 Picture2.PaintPicture Picture1, 0, i * cstep, Picture1.Width, cstep, 0,_ i * cstep, Picture1.Width, cstep, VBSrcCopy For j = 0 To 50000 Next j Next i End Sub
百叶窗效果显示图形 回[=m 回区 Hello Kitty Helle krete 水平垂直退出 垂直 退出 回N图垂直 水平 百叶窗效果显示
百叶窗效果显示
cLie Picture Box控件和 Image Box控件都适用于一个特定的功能目的, Image Box控件所需要的系统资源较少,但是它包含了 Picture Box的可用 的属性、方法和事件的子集。也就是说 Image Box控件比 PictureBox控件 在程序运行时要显示的快一些。使用图形控件比使用图形方法而言要少 许多的代码, Visual basic提供的图片框和图像框可以显示的图形格式有 以下几种:位图(*bmp/*dib)、图标(*ico/*cur)、图元文件 (*wmf*emf)、gif、jpeg(*jpg)等格式的文件。也就是说,在我们所 介绍的这两种控件中,我们都可以给它设置或者装入我们前面所介绍的 各种格式的图形。在装入图形的时候有两种方法,第一种就是在设计时 设置图片框或者图像框的 picture属性,另一种方法是在运行时动态地加 载图片文件,这里要用到一个方法, LoadPicture方法, LoadPicture方法的 使用语法格式为: Imagel picture=LoadPicture(c: Windows forest. bmp?) Picurel. picture=Load Picture(" c: Windows forest. bmp?)
PictureBox和ImageBox的使用 PictureBox控件和ImageBox控件都适用于一个特定的功能目的, ImageBox控件所需要的系统资源较少,但是它包含了PictureBox的可用 的属性、方法和事件的子集。也就是说ImageBox控件比PictureBox控件 在程序运行时要显示的快一些。使用图形控件比使用图形方法而言要少 许多的代码,Visual Basic提供的图片框和图像框可以显示的图形格式有 以下几种:位图(*.bmp/*.dib)、图标(*.ico/*.cur)、图元文件 (*.wmf/*.emf)、gif、jpeg(*.jpg)等格式的文件。也就是说,在我们所 介绍的这两种控件中,我们都可以给它设置或者装入我们前面所介绍的 各种格式的图形。在装入图形的时候有两种方法,第一种就是在设计时 设置图片框或者图像框的picture属性,另一种方法是在运行时动态地加 载图片文件,这里要用到一个方法,LoadPicture方法, LoadPicture方法的 使用语法格式为: Image1.picture=LoadPicture(“c:\Windows\forest.bmp”) Picure1.picture=LoadPicture(“c:\Windows\forest.bmp”)
绘制图形 图形控件 1. Shape控件 2.Line控件 图形控件与动画 曲柄滑块机构的演示。利用 Timer控件来控制图形控件的转动,如图所 口 Form1 □区 曲柄滑块机构的演示 曲柄滑块机构的演示 暂停(S) 开始(S) 曲柄滑块机构 用户界面的设计
绘制图形 图形控件 1. Shape控件 2. Line控件 图形控件与动画 曲柄滑块机构的演示。利用Timer控件来控制图形控件的转动,如图所 示。 曲柄滑块机构 用户界面的设计