版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.1VisualBasic图形图像技术5.2利用VisualBasic进行图像处理本章小结练习五5.1.1VB坐标系统及图形格式
1.坐标系统概述图5-1窗体的坐标系统
在进行图形操作时,都要使用绘图区域或容器的坐标系统。另外,如何用坐标系统定义窗体和控件在应用程序中的位置,也是很重要的。5.1VisualBasic图形图像技术在VB中,坐标系统是一个二维网格,可定义屏幕上、窗体中或其它容器中(如图片框)对象的位置。使用窗体中的坐标(x,y)可定义对象在网格上的位置。其中:x值是沿X轴的位置,最左端的值是0;y值是沿Y轴的位置,最上端的值是0。该坐标系统如图5-1所示。
对于VisualBasic坐标系统,应注意以下几点:
(1)当移动控件或调整控件的大小时,使用控件容器的坐标系统。如果直接在窗体上绘制对象,则窗体就是容器。如果在框架或图片框里绘制控件,则框架或控件是容器。
(2)所有的图形和Print方法均使用容器的坐标系统。例如,那些在图片框里绘制控件的语句,使用的是控件的坐标系统。
(3)一些用来调整窗体大小或移动窗体的语句,用缇来表示窗体的位置和大小。缇是打印机的长度单位,一缇等于二十分之一磅(1440缇=1英寸;567缇=1厘米)。图5-1窗体的坐标系统
(4)当创建用来调整窗体大小或移动窗体的代码时,应先检查Screen对象的Height属性和Width属性,以确保窗体在屏幕上大小合适。
(5)屏幕左上角的坐标总是(0,0)。任何容器的缺省坐标系统,都是由容器的左上角(0,0)坐标开始的。
(6)沿这些坐标轴定义位置的测量单位,统称为刻度。在VisualBasic中,坐标系统的每个轴都有自己的刻度。坐标轴的方向、起点和坐标系统的刻度都是可以改变的(一般情况下使用的是缺省系统)。可用对象的刻度属性ScaleMode和Scale方法,设置特定对象(窗体或控件)的坐标系统为缺省的刻度、标准刻度或自定义刻度。
(7)所有VisualBasic的移动、调整大小和图形绘制语句,根据缺省规定使用缇为单位。这些测量值指示对象打印后的大小。屏幕上的物理实际距离根据监视器的大小变化。
2.VisualBasic的图形格式
VisualBasic可以支持的图形格式有位图( .bmp)文件、设备独立位图( .dib)文件、图标( .ico)文件、光标( .cur)文件、元( .wmf)文件、增强的元( .emf)文件、GIF( .gif)文件以及JPEG( .jpg)文件。表5-1列出了在VB6.0中可以使用的图形文件格式。表5-1VB6.0可以使用的图形文件注:存储格式是指用VB6.0SavePicture存储后的文件格式。5.1.2PaintPicture方法和BitBltAPI函数
PaintPicture是自VB 4.0以后新的图形图像处理方法,它的基本功能是图像块传输。在以前的VB版本中要产生块传输效果时,需采用WindowsAPI中的块传输函数BitBlt。PaintPicture正是VB中用来代替BitBltAPI调用的简单而方便的方法。它能快速地将两幅位图合并;能将位图的全部或某一部分快速剪切并粘贴到其它地方;能将位图自动延伸或压缩以适应新的环境;能在屏幕上不同位置之间、屏幕与内存之间传递位图;采用32位三元光栅操作代码(RasterOp),在源位图、选定的刷子位图和目标位图之间进行颜色组合,生成目标位图中的最终颜色,它将13个常用的RasterOp操作以内部常量形式给出,不需任何声明。
1.PaintPicture方法
作用:在Form、PictureBox或Printer上绘制图形文件( .bmp、.wmf、.emf、.cur、.ico或 .dib)的内容。
语法:object.PaintPicturepicture,x1,y1,width1,height1,x2,y2,width2,height2,opcode
参数说明:
object:可选的,一个对象表达式,其值可以为窗体、PictureBox控件或Printer。如果省略object,则带有焦点的Form对象缺省为object。
picture:必需的,要绘制到object上的图形源。Form或PictureBox必须是Picture属性,Picture可以为BMP、DIB、ICO、WMF、EMF等格式的图片。
x1,y1:必需的(目标位图的参数),均为单精度值,指定在object上绘制Picture的目标坐标。object的ScaleMode属性决定使用的度量单位。
width1:可选的(目标位图的参数),单精度值,指示Picture的目标宽度。object的ScaleMode属性决定使用的度量单位。如果目标宽度比源宽度(width2)大或小,将适当地拉伸或压缩Picture。如果该参数省略,则使用源宽度。
height1:可选的(目标位图的参数),单精度值,指示Picture的目标高度。object的ScaleMode属性决定使用的度量单位。如果目标高度比源高度(height2)大或小,将适当地拉伸或压缩Picture。如果该参数省略,则使用源高度。
x2,y2:可选的(源位图的参数),均为单精度值,指示Picture内剪贴区的坐标(X轴和Y轴)。object的ScaleMode属性决定使用的度量单位。如果该参数省略,则缺省为0。
width2:可选的(源位图的参数),单精度值,指示Picture内剪贴区的源宽度。object的ScaleMode属性决定使用的度量单位。如果该参数省略,则使用整个源宽度。
height2:可选的(源位图的参数),单精度值,指示Picture内剪贴区的源高度。object的ScaleMode属性决定使用的度量单位。如果该参数省略,则使用整个源高度。
opcode:可选的,长型值或仅由位图使用的代码,该参数与BitBlt中dwRop参数的含义相同。它表示源图与目标位图(或刷子位图)的组合关系,用来定义在将Picture绘制到object上时对Picture执行的位操作(例如,vbMergeCopy或vbSrcAnd操作符)。VB为opcode定义了13个内部常量:其中,与刷子位图有关的常量是vbMergeCopy、vbPatCopy、vbPatInvert和vbPatPaint。这13个位操作符常数的详细含义,请参阅VisualBasicHelp文件中的RasterOpConstants主题。
在使用opcode时有一些限制。例如,如果资源是图标或图元文件,则只能使用vbSrcCopy,而不能使用其他的opcode。
另外,opcode用于将按位操作传递到位图。当传递其他图像类型时,将一个值赋给该参数会造成“无效过程调用或参数”的错误,这是设计的原因。为避免这个错误,在操作位图以外类型的图像时,要将opcode参数置为空。
注:通过使用负的目标高度值(height1)和/或目标宽度值(width1),可以水平或垂直翻转位图。
可以省略任何多个可选的尾部的参数。如果省略了一个或多个可选尾部参数,则不能在指定的最后一个参数后面使用逗号。如果想指定某个可选参数,则必须先指定语法中出现在该参数前面的全部参数。
巧用PaintPicture方法,结合控件属性,可以方便地产生许多常见的图像切换效果,如我们在多媒体作品及电视中常见的图像旋转引入、翻转、飞入、滑入、弹出、淡入淡出、隐现等动画效果。
■ PaintPicture方法实例:图像滑入(Wipe)效果的实现。
在滑入效果中,新图像逐渐覆盖旧图像,就像在墙上展开一幅卷成筒状的画。
设计步骤如下:
(1)缺省窗体Form1。
(2)按图5-2画出Form1。在PictureBox1中安装源图,程序在PictureBox2中展开PictureBox1中的图像。各对象的主要属性如表5-2所示。图5-2图像滑入效果的控件设计表5-2图像滑入控件属性设置(3)编程。程序代码如下:图5-3图像滑入效果2.BitBltAPI函数
作用:与PaintPicture方法相同。
函数声明:参数说明:
hDestDC:目标设备环境。
x:目标左上角坐标。
y:目标顶端坐标。
nWidth:目标宽。
nHeight:目标高。
hSrcDC:源设备环境。
xSrc:源左上角坐标。
ySrc:源顶端坐标。
dwRop:位处理操作,与PaintPicture方法相同,如vbSrcAnd、vbSrcAnd、vbSrcCopy等。
目标环境或源环境只能是Picture、Form或Printer对象,各单位为像素。
注意:将一个 .Bmp加载入PictureBox控件和使用WindowsAPI函数BitBlt()添加图片的方法有一点不同。当对一个图像使用BitBlt()时,PictureBox控件不能像使用LoadPicture方法那样去调整大小,即使将ScaleWidth和ScaleHeight属性设置为图像的大小也不起作用。如果想在使用BitBlt之后用PictureBox调整新图片的大小,则必须用代码手工做,转换单位并处理边框。下面是解决这一问题的一个简单例子。
■ BitBltAPI函数实例:多幅画面间切换的四种图像特技。
在多媒体程序设计中,为了美化屏幕,增加画面的动感,常常要用到各种图像显示特技。图像的切换技术能明显美化画面,用VisualBasic编制这类程序时,由于VB自身没有这种切换功能,因此需要利用第三方控件或调用WindowsAPI函数BitBlt来实现这种功能。下面介绍利用BitBlt函数实现画面切换的四种方法(从中间逐步放大、从左到右、从右到左、栅条状)。图5-4图像特技控件设计假设有四个图像文件(Pic1.jpg~Pic4.jpg),想要让这四幅画自动地循环显示,每幅画以某种切换方式出现,单击“结束”命令按钮时退出程序。设计步骤如下:
(1)创建项目文件。新建一个工程文件“工程1”,加入一个新的模块文件Module1及一个新的窗体Form1,并用VB画出如图5-4所示的窗体。
各对象的主要属性如表5-3所示。表5-3图像特技控件属性设置(2)程序代码。
Module1.bas中的内容(声明BitBlt函数):图5-5多幅画面间切换的四种图像特技5.1.3LoadPicture函数和SavePicture语句
1.LoadPicture函数
作用:将图形载入到窗体的Picture属性、PictureBox控件或Image控件。
语法:LoadPicture([filename],[size],[colordepth],[x,y])
参数说明:
filename:可选项,字符串表达式指定一个文件名,可以包括文件夹和驱动器。如果未指定文件名,则LoadPicture清除图像或PictureBox控件。
size:可选变体,如果filename是光标或图标文件,则size指定想要的图像大小。size的设置值为:
● vbLPSmall0:系统小图标。
● vbLPLarge1:系统大图标,由视频驱动程序决定。
● vbLPSmallShell2:外壳小图标大小,由“控制面板”中的DisplayProperties对话框中Appearance选项卡上的CaptionButtons的大小设置决定。
● vbLPLargeShell3:外壳大图标大小,由“控制面板”中的DisplayProperties对话框中Appearance选项卡上的图标大小设置决定。
● vbLPCustom4:自定义大小,由x和y参数提供。
colordepth:可选变体,如果filename是一个光标或图标文件,则指定想要的颜色深度。colordepth的设置值为:
● vbLPDefault0:如果使用指定文件,则为最佳可用匹配。
● vbLPMonochrome:12色。
● vbLPVGAColor:216色。
● vbLPColor3:256色。
x:可选变体,如果使用y,则必须使用x。如果filename是一个光标或图标文件,则x指定想要的宽度。在包含多个独立图像的文件中,如果所需大小的图像不能得到,则使用可能的最佳匹配。只有当colordepth设为vbLPCustom时,才使用x和y值。
y:可选变体,如果使用x,则必须使用y。如果filename是一个光标或图标文件,则y指定想要的高度。在包含多个独立图像的文件中,如果所需大小的图像不能得到,则使用可能的最佳匹配。
注:赋值不带参数的LoadPicture时,将清除窗体、图片框及图像控件中的图形。
为了加载在PictureBox控件和Image控件中显示的图形或加载作为窗体背景的图形,必须将LoadPicture的返回值赋给要显示该图片的对象的Picture属性。例如:
SetPicture=LoadPicture("PARTY.BMP")
SetPicture1.Picture=LoadPicture("PARTY.BMP")如果要将图标赋予窗体,则要把LoadPicture函数的返回值赋给Form对象的Icon属性。例如:
SetForm1.Icon=LoadPicture(“MYICON.ICO”)
图标也可以被赋予除Timer控件和Menu控件外的其它控件的DragIcon属性。例如:
SetCommand1.DragIcon=LoadPicture(“MYICON.ICO”)
使用LoadPicture可将图形文件载入到系统剪贴板,如下所示:
Clipboard.SetDataLoadPicture(“PARTY.BMP”)
■ LoadPicture函数实例:本例使用LoadPicture函数将图片加载到窗体的PictureBox控件并从控件上清除该图片。程序运行后,单击窗体,即可看到所加载的图片。
2.SavePicture语句
在用VB编制绘图程序时,有时需要将窗体或图片框上的绘图结果形成一个定制的图形文件保存起来,以便以后浏览或修改。这一功能可以用VB本身带有的SavePicture语句来完成。
SavePicture语句将窗体、图像控件或图片框中的图形图像保存到磁盘上的一个文件中。这些图像可以是使用画图方法(Line,Circle,Pset)设计出来的,也可以存储那些通过设置窗体载入的图像,或由图片框的图片属性载入的图像,或者通过PaintPicture方法或LoadPicture函数载入的图像。这些载入的图像可以是BMP、JPG、ICO或WMF图形文件。下面介绍SavePicture语句的使用。
作用:从对象或控件(如果有一个与其相关)的Picture或Image属性中将图形保存到文件中。
语法:SavePicturepicture,stringexpression
参数说明:
picture:产生图形文件的PictureBox控件或Image控件。
stringexpression:欲保存的图形文件名。
注:无论在设计时还是运行时,图形都是从文件加载到对象的Picture属性,而且,如果图形是位图、图标、元文件或增强元文件,则图形将以与原始文件同样的格式保存。
Image属性中的图形总是以位图的格式保存而不管其原始格式。
下面举一个具体的例子来说明保存图像文件的过程。
■ SavePicture语句实例:本例使用SavePicture语句保存画在Form对象的Picture属性中的图形。最后有两点需要指出:
(1)在使用SavePicture语句之前,必须先将窗体或图片框的AutoRedraw属性设为True,否则保存的将是一张空图。
(2)使用Image属性保存的用画图命令(如Line、Circle、Pset或Print)画出来的图形总是以BMP文件格式保存的。但在程序设计时,如果使用窗体或图片框的Picture属性载入或在程序运行时通过LoadPicture函数载入的图像,使用SavePicture语句存储时,存储的文件格式同其载入前的文件格式一样(如ICO格式等)。5.1.4PSet、Circle、Line绘图方法
除了图形控件(Line控件、Shape控件)之外,VisualBasic还提供有创建图形的一些方法。下面总结的这些图形方法适用于窗体和图片框。
方法描述
Cls 清除所有图形和Print输出
PSet 设置各个像素的颜色
Point 返回指定点的颜色值
Line 画线、矩形或填充框
Circle 画圆、椭圆或圆弧
PaintPicture 在任意位置画出图形注意,Print方法也可认为是一种图形方法,因为它的输出也写在对象上,并像PSet、Circle和Line方法一样,也要以内存图像的方式进行保存(如果AutoRedraw是打开的)。
在许多需要使用图形控件的场合,图形方法能工作得很好。例如,在图表中创建网格线时需要用到直线控件数组,而使用Line方法时则只需少量代码即可。当窗体改变大小时,跟踪数组中Line控件的位置比起用Line方法简单地重新画线要麻烦得多。
需要将可视的效果直接显示在窗体上时,如要显示出有关对话的色条,可以为这种临时性效果编写几组代码行,而不是使用另一个控件。图形方法提供了一些在图形控件无效的可视效果。例如,使用图形方法只能创建圆弧或画单个像素。用这些图形方法创建出的图形,显示在窗体上它们自己的那一层中,窗体中的这一层在所有其他控件之下。所以,需要创建在应用程序中其他事物之下的图形时,这种方法就很好。
用图形方法创建图形是在代码中进行的,这就意味着必须运行应用程序才能看到图形方法的结果。因而,对于创建界面的简单设计元素来说,图形方法就不能代替图形控件的作用。设计时改变图形控件的外观,比修改并测试图形方法的代码简单。以下详细介绍PSet、Circle和Line方法。
1.PSet方法
作用:将对象上的点设置为指定颜色。
语法:object.PSet[Step](x,y),[color]
参数说明:
object:可选项,对象表达式,其值为“应用于”列表中的对象。如果object省略,则具有焦点的窗体作为object。
Step:可选项,关键字,指定相对于由CurrentX和CurrentY属性提供的当前图形位置的坐标。
(x,y):必需的,Single(单精度浮点数),被设置点的水平(x轴)和垂直(y轴)坐标。
color:可选的,Long(长整型数),为该点指定的RGB颜色。如果它被省略,则使用当前的ForeColor属性值,可用RGB函数或QBColor函数指定颜色。
注:所画点的尺寸取决于DrawWidth属性值。当DrawWidth为1时,PSet将一个像素的点设置为指定颜色;当DrawWidth大于1时,点的中心位于指定坐标。画点的方法取决于DrawMode和DrawStyle属性值。
执行PSet时,CurrentX和CurrentY属性被设置为参数指定的点。想用PSet方法清
除单一像素,可通过设定该像素的坐标,并用BackColor属性设置作为color参数的方法来实现。
■ PSet方法实例:用PSet方法在窗体上画五彩碎纸。
2.Circle方法
作用:在对象上画圆、椭圆或弧。
语法:object.Circle[Step](x,y),radius,[color,start,end,aspect]
参数说明:
object:可选的,对象表达式,其值为“应用于”列表中的对象。如果object省略,则具有焦点的窗体作为object。
step:可选的,关键字,指定圆、椭圆或弧的中心,它们相对于当前由object的CurrentX和CurrentY属性提供的坐标。
(x,y):必需的,Single(单精度浮点数),圆、椭圆或弧的中心坐标。object的ScaleMode属性决定了使用的度量单位。
radius:必需的,Single(单精度浮点数),圆、椭圆或弧的半径。object的ScaleMode属性决定了使用的度量单位。
color:可选的,Long(长整型数),圆的轮廓的RGB颜色。如果它被省略,则使用ForeColor属性值,可用RGB函数或QBColor函数指定颜色。
start,end:可选的,Single(单精度浮点数),当弧、部分圆或椭圆画完以后,start和end指定(以弧度为单位)弧的起点和终点位置。其范围从 -2 pi~2pi。起点的缺省值是0;终点的缺省值是2*pi。
aspect:可选的,Single(单精度浮点数),圆的纵横尺寸比。缺省值为1.0,它在任何屏幕上都产生一个标准圆(非椭圆)。
注:想要填充圆,则使用圆或椭圆所属对象的FillColor和FillStyle属性即可。只有封闭的图形才能填充。封闭图形包括圆、椭圆和扇形。
画部分圆或椭圆时,如果start为负,则Circle画一半径到start,并将角度处理为正的;如果end为负,则Circle画一半径到end,并将角度处理为正的。Circle方法总是沿逆时针(正)方向绘图。
画圆、椭圆或弧时,线段的粗细取决于DrawWidth属性值。在背景上画圆的方法取决于DrawMode和DrawStyle属性值。
画角度为0的扇形时,要画出一条半径(向右画一水平线段),这时给start规定一很小的负值,不要给0。
可以省略语法中间的某个参数,但不能省略分隔参数的逗号。指定的最后一个参数后面的逗号是可以省略的。
Circle执行时,CurrentX和CurrentY属性被参数设置为中心点。
■ Circle方法实例:用Circle方法在窗体中央画许多同心圆。效果如图5-6所示。图5-6同心圆
3.Line方法
作用:在对象上画直线和矩形。
语法:object.Line[Step](x1,y1)[Step](x2,y2),[color],[B][F]
参数说明:
object:可选的,对象表达式,其值为“应用于”列表中的对象。如果object省略,则具有焦点的窗体作为object。
step:可选的,关键字,指定起点坐标,它们相对于由CurrentX和CurrentY属性提供的当前图形位置。
(x1,y1):可选的,Single(单精度浮点数),直线或矩形的起点坐标。ScaleMode属性决定了使用的度量单位。如果省略,则线起始于由CurrentX和CurrentY指示的位置。
step:可选的,关键字,指定相对于线的起点的终点坐标。
(x2,y2):必需的,Single(单精度浮点数),直线或矩形的终点坐标。
color:可选的,Long(长整型数),画线时用的RGB颜色。如果它被省略,则使用ForeColor属性值。可用RGB函数或QBColor函数指定颜色。
B:可选的,如果选择B,则利用对角坐标画出矩形。
F:可选的,如果使用了B选项,则F选项规定以矩形边框的颜色填充。不能不用B而用F。如果不用F而只用B,则矩形用当前的FillColor和FillStyle填充。FillStyle的缺省值为transparent。
注:画连接的线时,前一条线的终点就是后一条线的起点。线的宽度取决于DrawWidth属性值。在背景上画线和矩形的方法取决于DrawMode和DrawStyle属性值。
执行Line方法时,CurrentX和CurrentY属性参数被设置为终点。
■ 绘图方法程序实例:绘制任意曲线的真彩色画板。在绘图软件(如MicroSoftPainter、AdobePhotoShop等)中,画板通常具有在规定区域内,以任意的颜色,绘制任意曲线及一些基本图形(直线、矩形、圆等)的功能。下面介绍的“真彩色画板”(见图5-7)可以在一个画图区域内,以任意的颜色(16 777 216种颜色)绘制任何曲线。程序中采用前面介绍的Line绘图方法与鼠标的MouseDown及MouseMove事件,并使用RGB(Red,Green,Blue)函数选取画笔颜色,实现具体的绘图操作。
1)窗体中的控件说明
在“真彩色画板”程序用户界面中,按图5-7的布局使用了以下17个控件:
(1)两个图片框(Picture1、Picture2):Picture1用作绘图区域,即图5-7中的大块白色区域;Picture2用来放置窗体右上角的软件标志图片。
(2)四个命令按钮:“打开”(Command1)、“保存”
(Command2)、“清屏”(Command3)、“退出”
(Command4)。
(3)三个水平滚动条(Hscroll1、Hscroll2、Hscroll3):分别用于设置RGB函数的三个分量Red(红色)、Green(绿色)和Blue(蓝色)的值,各分量取值范围均为0~255,可合成256×256×256=16 777 216种颜色,即所谓的“真彩色”。
(4)七个标签:分别用于显示标题“红色通道”(Label1r)、“绿色通道”(Label1g)、“蓝色通道”(Label1b)、RGB函数返回的合成色“画笔颜色”(Label2),以及标题“红色”(Label3)、“绿色”(Label4)、“蓝色”(Label5)。
(5)一个帧控件(Frame1):用作绘图区域边框。图5-7“真彩色画板”用户界面从上面图片框Picture1的MouseMove事件过程的设计中可以看出,画图的过程是从按下鼠标左键开始的,画图过程中只需移动鼠标指针而不必一直按住鼠标键,这就大大方便了用户的画图操作。要停止画图,只需再一次按下鼠标左键。
上面介绍的“真彩色画板”只能绘制曲线,我们可以在此基础上很方便地为“真彩色画板”添加绘制“点”、“直线”、“矩形”、“圆”等功能。由于本书篇幅的关系,这些功能留给读者练习。5.2.1在图片上平滑移动文字
在很多电影及游戏的结尾,我们可以看到文本在图片上平滑地卷到屏幕的上方(如电影的版权声明等),在VB中,可以使用以下方法来实现此“特技”。
首先,新建一工程文件,并创建Form1。在Form1上放置PictureBox控件Picture1,选定背景图片。另外,放置一Timer控件Timer1,设置Enabled属性为True,设置Interval为100(Interval决定文本移动速度)。5.2利用VisualBasic进行图像处理
然后,单击选择Picture1(即以它为一个容器),在PictureBox的底部放置Label控件Label1,并设置Label1的BackStyle属性为0(透明,即控件后的背景色和任何图片都是可见的),设置Caption为待移动的字符串。
各对象属性如表5-4所示。表5-4平滑移动文字窗体控件设置用VB画出的窗体如图5-8所示。图5-8平滑移动文字窗体设计程序运行后,我们就可以看见文字在图形上由下向上平滑移动。如果将程序稍加改变,就可以实现由上到下、由左到右或由右到左移动的“特技”效果。5.2.2图像的滚动显示和缩放
我们在制作多媒体程序时,不可避免地要涉及图像的显示。尽管VB中提供的PictureBox可以显示多种格式的图像文件,但由于没有提供滚动条和缩放功能,因此在使用中多有不便。要对图像进行缩放显示,通常有两种处理办法:一是利用第三方控件,如Windows自带的WANG图像控件;二是利用VB的PictureBox和滚动条控件自行编程实现。采用第三方控件时,功能较强,程序编制也简单一些,但存在一些其他问题,比如WANG图像编辑控件在使用中经常出现“类没有注册”的错误,这将降低软件的通用性。所以,在要求的功能不是很多的情况下,用第二种方法比较合适。下面我们就介绍如何利用VB的PictureBox和滚动条控件来实现图像的滚动和缩放。
程序中使用了两个图片框(picture1、picture2),picture1作为包容器,picture2作为子图片框来显示图形,配合滚动条控件在包容器内移动子图片框就可实现画面的滚动。picture2中图形的显示采用前面介绍过的paintpicture方法(见5.1.2),它可以在窗体、图片框上的任何地方绘制图形。下面先介绍窗体的设计。
首先在窗体中放置picture1作为包容器,然后在其中放置picture2,最后在窗体中放置两个滚动条(一个为水平滚动条HScroll1,另一个为垂直滚动条VScroll1)。picture2的AutoSize属性为True,BorderStyle属性为0,AutoRedraw属性为True,滚动条的LargeChange和SmallChange属性设为合适大小。
用VB画出的窗体如图5-9所示。
各对象的属性定义如表5-5所示。图5-9图像的滚动显示窗体设计表5-5图像滚动显示窗体控件属性设置程序运行后,可以用光标键移动画面,也可以用拖放方式移动画面,还可用加减号缩放画面。下面介绍另外一种放大和缩小图像的简单方法:把图像放到Image控件,设置属性Stretch为True。这时,只要改变Image的大小,图像就可以放大和缩小。以下程序是在Image1单击事件中将图像缩小一倍:图像滚动效果如图5-10所示。图5-10图像滚动显示效果5.2.3屏幕图像的捕捉
为了使多媒体软件更加直观、生动、简练,人们往往在多媒体软件中加入了更多的图像。多媒体软件中使用的图像主要有以下几个来源:扫描仪输入、数字化照相机采集、从光盘素材库中选取、屏幕抓图(捕捉屏幕图像)、用专用软件制作等。这里介绍一种获取图像的简捷方法,即捕捉屏幕图像。
我们可以通过一系列WindowsAPI函数的调用,来实现屏幕图像的捕捉。下面给出完整的程序及调用实例,请读者认真阅读程序中的注释。
首先用VB画出如图5-11所示的窗体。其中包含一个Button控件和一个PictureBox控件。图5-11捕捉屏幕图像的控件设计
程序运行后,单击“捕捉”命令按钮后,将捕捉以(0,0)为坐标、320×240大小的屏幕图像,并放到Picture1中(见图5-12)。图5-12程序运行后的捕捉结果5.2.4图像的滤镜效果
图像处理软件PhotoShop最吸引人之处莫过于它的滤镜(Filter)功能。下面介绍如何使用VB来设计图像的滤镜效果。
我们知道,在VB中有两个操作像素的基本方法:PSet和Point。使用PSet方法可以生成像素;使用Point方法则可以读取像素值,并且显示器上所有能显示的颜色都可用RGB值来表示。VB中提供的RGB(Red,Green,Blue)函数有三个分量:Red、Green和Blue,如RGB(255,0,0)表示红色,RGB(255,255,0)表示黄色等,它们都代表一个长整形数。
VB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版门卫管理外包专业服务合同4篇
- 2025年涤棉细布纯棉平布项目可行性研究报告-20250102-134626
- 2025年度个人股东股权转让与生物科技研发合同3篇
- 二零二五年度船舶交易风险评估与管理合同3篇
- 2025年度电商平台用户隐私保护与数据安全合作合同4篇
- 2025年度航空航天器表面打磨加工合同范文4篇
- 个人房产出租合同规范样本2024年版
- 二零二四年度智能家居系统集成与维护合同书3篇
- 二零二四年度医院聘用护士护理专业职称评定合同3篇
- 2025年度专业仓储管理服务合同
- 不同茶叶的冲泡方法
- 光伏发电并网申办具体流程
- 建筑劳务专业分包合同范本(2025年)
- 企业融资报告特斯拉成功案例分享
- 五年(2020-2024)高考地理真题分类汇编(全国版)专题12区域发展解析版
- 《阻燃材料与技术》课件 第8讲 阻燃木质材料
- 低空经济的社会接受度与伦理问题分析
- GB/T 4732.1-2024压力容器分析设计第1部分:通用要求
- 河北省保定市竞秀区2023-2024学年七年级下学期期末生物学试题(解析版)
- 运动技能学习与控制课件
- 六编元代文学
评论
0/150
提交评论