多媒体程序设计_第1页
多媒体程序设计_第2页
多媒体程序设计_第3页
多媒体程序设计_第4页
多媒体程序设计_第5页
已阅读5页,还剩133页未读 继续免费阅读

下载本文档

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

文档简介

1、第11章 多媒体程序设计11.1 多媒体程序设计概要11.2 人机界面设计11.3 图形、图像程序设计技术11.4 数字音频软件开发技术11.1 多媒体程序设计概要11.1.1 VB编程的根本概念1. 三个重要概念(1) 窗口。窗口是一种有边境的矩形区域,例如,VB窗口、Word的文档窗口、对话框窗口等。(2) 事件。事件是经过鼠标、按键的操作、程序的控制或其他窗口所产生的操作或行为。(3) 音讯。发惹事件时就引发一条音讯发送到操作系统。2. 事件驱动模型事件驱动模型具有非过程化的特点,在事件驱动模型中,程序代码不是按照预定的顺序执行,而是在呼应不同的事件时执行不同的代码片段。3. Windo

2、ws的任务方式Windows操作系统经过给每一个窗口提供一个独一的标识符来管理一切窗口。操作系统延续地监视每一个窗口的活动或事件信号。当事件发生时,就引发一条音讯,操作系统处置该音讯并广播给其他窗口。最后,每一个窗口根据本身处置该条音讯的指令而采取适当的操作。 11.1.2 VB中的对象对象是代码和数据的组合,可以作为一个单位来处置。对象简单地说就是我们经常看到的各种窗口、按钮、文本框等。对象可以是运用程序的一部分,比如可以是控件或窗体。整个运用程序也是一个对象。详细地说,在VB中对象可分为全局对象和程序界面对象。1全局对象所谓全局对象,是指运用程序在程序的任何层次都可以访问的对象,共有以下几

3、种: (1) APP:设计的运用程序,它的属性决议运用程序的标题、途径、可执行文件名以及协助文件名等。(2) Clipboard:它就是Windows中的剪贴板,在VB运用程序中可用关键字Clipboard来访问它,从而操作其上的数据或图形,即将数据送到剪贴板上或从剪贴板上取回数据。 (3) Screen:计算机屏幕,也是运用程序窗口的“容器,经过它可以设置运用程序的窗口在屏幕上的位置以及鼠标指针的外形。(4) Debug:调试窗口,当运用程序在VB集成环境中运转时它才显示出来,用于调试程序。(5) Printer:打印机,联机的打印机也是一个对象,运用程序可操作它在纸上输出结果。 2. 程序

4、界面对象程序界面对象共有以下几种:(1) Form:窗体。VB工程中的每一个窗体都是独立的对象,类似控件对象,它们提供一些事件过程,可作为程序界面或对话框。绝大多数情况下,我们把窗体当作在其中能放置控件的框架,它是运用程序界面中的部件或对话框中的部件的“容器。(2) Control:控制部件(控件)。这是和用户交互的规范部件,命令按钮、文本框、列表框、滚动条、菜单等都属此类。除菜单控件外,一切控件都可用工具箱中的工具“画出来。菜单控件是用菜单设计窗口作为工具设计出来的。界面设计就是在窗体上放置控件并指定其属性。(3) 数据库访问对象:数据库是对象,并且还包含其他对象,如字段、索引等。VB的专业

5、版可以操作数据库,数据访问对象是为访问数据库而设的。11.1.3 VB程序设计要素通常,一个VB程序至少含有一个窗体,在这个窗体中可以包含一个或多个对象,并以控件的方式存在。控件不仅拥有属性,还拥有事件过程,它决议当控件有一个或几个操作行为激活时所发生的事情。1. 属性(Properties)的设置属性是一个对象的性质,它决议对象的外观和普通行为。对象的属性中,有的属性在设计时可更改,可经过属性窗口加以设置;有的属性是系统赋予对象的,只能在运转时访问这种属性,但不可更改;有的属性仅在运转时才可访问和更改。后两种属性出如今属性窗口的列表中。在程序中,访问对象的属性的格式如下:对象名.属性其中,对

6、象名和属性间用“.衔接,假设省略对象名,那么指当前具有焦点的对象。上述组合可看作是一个变量。即可对其赋值(除非只读属性),也可将其值赋予别的变量。 2. 事件(Event)的产生事件就是系统可以感知的用户操作信息,可以看作是系统对对象的呼应。事件通常触发VB程序中的一段代码。事件可分为鼠标事件、键盘事件和其他事件。每个对象都可引发事件,在VB中都曾经预备好对应的事件过程,程序员只需编写呼应事件的代码。3. 函数(Function)、过程(Procedure)和方法(Method)的作用(1) 函数。函数是包含操作数据的程序语句集。当我们需求完成某种义务时,就要调用过程;当我们需求前往值时,就调

7、用函数。VB包括几十种函数,这些函数执行通用的操作,如修正字符串的前导空格或去掉其尾部空格或计算一个角度的正弦。(2) 过程。在VB中,每个对象可引发的事件过程的模板曾经预备好,在设计时,双击控件,可翻开与此控件有关的代码窗口,在过程下拉列表框中,列出了这个控件能够引发的事件对应的过程。选择某一过程可翻开该过程的代码模板。另一种过程就是函数,和对象相联络的函数用于改动或设置对象的某种属性。例如,LoadPicture函数可设置窗体的Picture属性。(3) 方法。VB中的窗体和控件对象给我们提供了一种特殊的过程,它在程序控制下任务,可以看作是对象的动作。在面向对象程序设计中,这样的过程叫做方

8、法。方法是一种特殊的过程,它和过程的差别是它从属于特定的对象,因此调用时必需指明对象。方法的调用语法为对象名.方法参数对象名和方法之间用“.衔接。假设省略对象名,那么对象指的是当前的活动对象。例如,调用Debug对象的Print方法,可用语句Debug. Print4. 模块(Module)组织VB运用程序的代码是以分层方式组织并存储在模块中的。典型的运用程序应包括假设干模块:运用程序中每个窗体的窗体模块、共享代码的可选规范模块以及可选的类模块。每个模块包含假设干含有代码的过程:Event事件过程、Sub子过程或Function函数以及Property属性过程。图11-1 VB的常用控件和窗体

9、(a) 控件;(b) 窗体对于每个规范模块、类模块和窗体模块都可包含声明及过程。(1) 声明:可以将常数、类型、变量和动态链接库(DLL)过程的声明放在窗体、类或规范模块的模块级。(2) 过程:可以是Sub、Function或Property过程。它包含可以作为单元来执行的代码片段。11.1.4 VB中的常用控件和窗体VB的常用控件如图11-1(a)所示,其他要添加的控件可在菜单项“工程/部件 中选择添加。VB的常用窗体(Form)如图11-1(b)所示。11.2 人机界面设计11.2.1 多媒体图形用户界面的特点图形用户界面(Graphics User Interface,GUI)专门用来代

10、表以图形方式任务的窗口,如图标、菜单、按钮、滚动条、对话框等界面部件,也包括可以挪动、定位、点取图形目的的定位设备的界面。多媒体图形用户界面是在图形用户界面的根底上,再加上一些其他媒体(如多媒体音频、视频、动画等)的特性。多媒体图形用户界面的主要特点如下:(1) 广泛运用窗口、图标、菜单、按钮、对话框等根本界面部件来表示运用目的,这些图形目的的表示都具有直观、笼统、可视等特点。其中图标是表示把一个运用程序缩到最小时所代表的程序内部功能、动作的可视图形符号。(2) 可运用图形部件笼统地表示感兴趣的目的,使系统完成的操作或命令能用逼真的模拟、比喻来表示,而且一切感兴趣的目的在GUI界面上被延续显示

11、出来。(3) 有高度的交互性。每一输入动作都直接被系统解析,动作的结果可以是文字、声音、图像、视频或动画等多媒体表现方式,并可以立刻反响给用户。而对于其他交互方式,要等到全部输入完成后才干被系统解析,并产生系统呼应。 (4) 支持鼠标类定位设备完成光标的挪动和目的的选取。因此,只需支配鼠标器或按下按钮即可替代文本界面方式中的复杂语法和命令键入,在GUI方式下的识别和点取目的比命令方式下记住并键入命令要容易和快速得多。(5) 提供了快速的、增量式的可逆转的操作,并且一切操作过程效果都可察看到。(6) 以一致的方式完成对一切目的的显示和支配。一致的显示和支配方式减少了用户的记忆、学习负担和出错率,

12、也有利于规范化的人机界面的构成。(7) 提供系统预验证功能,使得只需有效的交互才干发生效果。假设用户指向一个对象的动作对当前的义务是无意义的,那么显示屏上就无反响。(8) 提供了对用户出错的维护机制和强有力的协助机制。GUI界面运用比喻、模拟日常操作方式,因此易学易用,本身不易出错,并且一旦出错,结果可立刻显示。而且用户操作是可恢复的,即具备UNDO功能。这些功能减少了用户对能够错误的担忧,运用户能把精神集中在义务上。另外,强有力的协助机制还可以协助用户正确支配和运用系统。 11.2.2 利用VB开发图形用户界面首先要了解界面设计的普通性原那么,最为重要的有:(1) 界面要具有一致性。一致性原

13、那么在界面设计中最容易被违反,同时也最容易修正和防止。例如,在菜单和联机协助中必需运用一样的术语;对话框必需具有一样的风格。(2) 常用操作要有捷径。常用操作的运用频度大,应该减少操作序列的长度,使常用操作具有捷径,使界面在功能实现上简捷和高效。例如,为文件的常用操作(如翻开、封锁、保管等)设置快捷键。(3) 提供简单的错误处置。系统要有错误处置的功能,在出错时,系统应能检测出错误,并且提供简单的容易了解的错误处置功能。(4) 提供信息反响。对常用的操作和简单的操作可以不要反响,但对不常用操作和至关重要的操作,系统应该提供信息的反响。(5) 操作可逆。操作可逆对于不具备专门知识的操作人员相当有

14、用。可逆的动作可以是单个操作,或者是一个相对独立的操作序列。(6) 设计良好的联机协助。对大多数不熟练用户来说,联机协助具有非常重要的作用。 11.2.3 菜单设计的原那么和编程技术菜单设计有如下的普通性原那么:(1) 按照系统的功能来组织菜单,分配菜单界面的宽度和深度,使菜单层次构造和系统功能层次构造相一致;(2) 选用广而浅的菜单树,普通菜单嵌套层次不宜超越四层,每级菜单项不宜超越79项;(3) 根据菜单项选择项的含义进展分组,并且按一定的规那么排序;(4) 菜单项的安排应有利于提高菜单项选择取速度;(5) 常用选项要设置快捷键。结合以上原那么,VB菜单编程有以下6方面的技术和技巧。1.

15、菜单项选择项的分组在VB中,菜单项选择项的分组是经过菜单栏分隔横线实现的。在菜单的一定位置添加一个Caption属性为“_的菜单项,那么菜单相应位置上就表现为一条横线。2. 常用选项快捷键的设置翻开菜单设计窗口(Menu Design Window),对应于每个菜单项选择项有相应的快捷键列表。但具有子菜单的菜单或者顶层菜单的快捷键要按Windows的界面设计原那么设置,顶层菜单的快捷键方式是“Alt+字母键。3. 菜单项选择项的允许与制止、可见与隐藏菜单项选择项的允许与制止是经过改动选项的Enabled属性实现的。举例来说,假设菜单项选择项名为Mainmen,那么制止该选项可以用Mainmen

16、.Enabled=False。同样,隐藏一个选项可用Mainmen.Vsible=False来实现,恢复时用Mainmnue.Visible=True实现。4. 弹出式菜单的实现(PopupMenu Method)弹出式菜单是在程序界面的一定区域内按鼠标键后出现的菜单,多用于实现系统的附加或加强功能。弹出式菜单的实现要用到下拉式菜单设计的技术和PopupMenu方法。详细做法是:在菜单设计框里设计好相应窗体的弹出式菜单(留意,要弹出的菜单必需至少有一个子菜单,因此这个菜单不能有快捷键,并且Checked属性必需是False),再把弹出式菜单的Visible属性改为False。在具有弹出式菜单的

17、窗体的Form_Click中参与以下代码(假设弹出式菜单的Name属性是Mnuexample):Sub Form_Click()PopupMenu MnuExampleEnd Sub 假设要求只需按下鼠标左键或右键才干激活菜单,就必需在form_mousedown 里参与以下代码:Sub Form_MouseDown(Button As Integer, shift As Integer, x As Single, y As Single)If Button = 2 Then Button = 2 表示鼠标右键PopupMenu MenuExampleEnd IfPopupMenu的完好语法是

18、form. PopupMenu MenuNameflags,x,y改动flags的值可以控制弹出式菜单的表现方式。flags有两组值:一组值用来控制菜单的显示方式,包括PopupMenu_Leftalign、PopupMenu_CenterAlign和PopupMenu_RightAlign,分别表示以x为左边境、以x为中心和以x为右边境的显示方式,缺省为以x为左边境。 一组值用来控制菜单项的选中方式,包括PopupMenu_LeftButton和PopupMenu_RightButton,分别表示左键选中和右键选中,两个值可同时运用,左键选中为缺省方式。flags的值由上面的两组值经过or运

19、算得出。例如,要左对齐显示并且以左键选中为准,那么应有。flags=PopupMenu_LeftAlign or PopupMenu_LeftButton x和y用来定义菜单弹出的位置,缺省是鼠标点中的位置。 5. 菜单项的其他属性用Alt+字母键激活顶层菜单,或者在菜单激活后用字母键激活一个菜单项,必需运用&。& 用在菜单项的标题属性(Caption)里。它的用法和作用与在用C言语编制Windows程序中的用法和作用一样。假设希望顶层菜单之间的间隔大一些,或者某个顶层菜单出如今菜单条的最右端,就要用到标题属性是空格的菜单。如一个菜单的标题是由多个空格组成的,那么这个菜单在菜单条上就占用跟空格

20、的个数相应的空间,并且它后面的菜单也顺序地后移。 6. 位图菜单在通常的程序中菜单总是以文本的方式存在,有时候显得单调乏味,假设能在菜单中参与位图图形,将会极大地添加用户的运用兴趣。下面引见如何运用位图制造菜单项选择项。位图菜单的创建,要用到Windows运用程序接口(API)函数,需求将这些函数的声明包含在运用程序的规范模块(Module1.Bas)中,详细的内容见下面的程序。创建位图菜单的根本思想如下:(1) 运用函数GetsubMenu来提取子菜单项的句柄,并经过运用函数CreateCompatibleDC来创建一个兼容的设备环境描画表。(2) 在一个循环过程中经过运用CreateCom

21、patibleBitmap函数、SelectObject函数以及BitBlt函数来分别将针对各个菜单项所载入的位图选入到兼容设备环境中。载入位图的方法很多,在下面的程序中,我们在窗体上设置了4个图片框控件(PictureBox),运用它门载入4个预设的图标来作为菜单项选择项位图的源文件。当然也可以运用其他的方法,例如,在程序中运用LoadPicture函数来从磁盘装载位图。(3) 经过ModifyMenu函数绘制真正的位图菜单项选择项。 (4) 运用Deletedc函数来释放设备环境,以便其他的程序可以运用这些设备。 工程文件的建立步骤如下:(1) 在Visual Basic中建立一个新的工程

22、,采用缺省的方法建立Form1。(2) 创建一个新的模块,采用缺省的方法建立Module1.Bas。(3) 在Form1上添加4个图片框控件(运用控件数组),将它们的Name属性设置为Picture1,将它们的Index属性依次设置为0、1、2、3,将它们的AutoRedrew属性、AutoreSize属性设置为Ture,将它们的Appearance属性、BorderStyle属性设置为0,Visble属性设置为False。(4) 将Open.Bmp、About.Bmp、Help.Bmp、Quit.Bmp 4个图标文件赋给上面的4个图片框控件的Picture属性。(5) 在Form1上添加一个

23、菜单项,将其标题设置为“主菜单(&F),称号设置为Mnumain。在其下添加4个子菜单项,分别将这4个子菜单项的称号设置为“翻开(&O)。将“关于(&A),“协助(&H)及“退出(&E)的称号设置为“Mnumain_Select,并将这4个子菜单项的索引相应设置为0、1、2、3。11.3 图形、图像程序设计技术11.3.1 VB坐标系统及图形格式1. 坐标系统概述在进展图形操作时,要运用绘图区或容器的坐标系统。如何用坐标系统定义窗体和控件在运用程序中的位置,是很重要的。在VB中,坐标系统是一个二维网格,可定义屏幕上、窗体中或其他容器中的位置。运用窗体中的坐标(x,y),可定义网格上的位置。其中

24、x值是沿x轴的位置,最左端的值是0;y值是沿y轴的位置,最上端的值是0。对于VB坐标系统,应留意以下几点:(1) 当挪动或调整控件的大小时,要运用控件容器的坐标系统。直接在窗体上绘制对象时,窗体就是容器;在框架或图片框里绘制控件时,框架或控件是容器。(2) 一切的图形和Print方法都要运用容器的坐标系统。(3) 一些用来调整窗体大小或挪动窗体的语句,可设置窗体的位置和大小。 (4) 当创建用来调整窗体大小或挪动窗体的代码时,应先检查Screen对象的Height属性和Width属性,以确保窗体在屏幕上大小适宜。(5) 屏幕的左上角总是(0,0)。任何容器的缺省坐标系统都是由容器的左上角(0,

25、0)坐标开场的。(6) 沿坐标轴定义位置的丈量单位,统称为刻度。在VB中,坐标系统的每个轴都有本人的刻度。坐标轴的方向、起点和坐标系统的刻度都是可以改动的。(7) 一切VB的挪动、调整大小和图形绘制语句都根据缺省规定运用“缇为单位。 2. VB的图形格式VB可以支持的图形格式有位图(.bmp)、设备独立位图文件(.dib) 、图标(.ico)文件、光标(.cur)文件、元(.wmf)文件、加强的元文件(.emf)、GIF(.gif) 文件以及JPEG(.jpg)文件。11.3.2 PaintPicture方法和BitBlt Api函数PaintPicture的根本功能是传输图像块。它能快速地将

26、两幅位图进展合并;能将位图的全部或某一部分快速剪切并粘贴到其他地方;能将位图自动延伸或紧缩以顺应新的环境;能在屏幕上不同位置之间、屏幕与内存之间传送位图;它采用32位三元光栅操作代码(Rasterop)在源位图、选定的刷子位图和目的位图之间进展颜色组合,生成目的位图中的最终颜色;它将13个常用的Rasterop操作以内部常量方式给出,不需任何声明。 1. PaintPicture方法(1) 作用:在Form,PictureBox或Printer上绘制图形文件的内容。(2) 语法:Object.PaintPicture Picture,x1,y1,Width1,Height1,x2,y2,Wid

27、th2,Height2,Opcode(3) 参数阐明:Object是可选的。一个对象表达式的值可以为窗体、PictureBox控件或Printer。假设省略Object,那么为当前具有焦点的对象。Picture是必选的。要绘制到Object上的图形源、Form或PictureBox必需是Picture属性。Width1是可选的(目的位图参数)。它用于指示Picture的目的宽度。Height1是可选的(目的位图参数)。它用于指示Picture的目的高度。x2,y2是可选的(源位图参数)。它用于指示Picture内剪贴区的坐标(x轴和y轴)。Width2是可选的(源位图参数)。它用于指示Pict

28、ure内剪贴区的源宽度。Height2是可选的(源位图参数)。它用于指示Picture内剪贴区的源高度。 Opcode是可选的。它是长型值或仅有位图运用的代码,表示源图与目的位图(或刷子位图)的组合关系,用来定义在将Picture绘制到Object上时对Picture执行的位操作。 2. BitBlt Api函数(1) 作用:与PaintPictur方法一样。(2) 函数声明:Declare Funtion BitBlt Lib Gdi32 Alias Bitblt(By Val hDestDC As Long,By Val x As Long,By Val y As Long , By Va

29、l n Width As Long , By Val nHeight As Long , By Val hSrcDC As Long , By Val xSrc As Long , By Val ySrc As Long , By Val dwRop As Long) As Long (3) 参数阐明:hDestDC:目的设备环境。x:目的左上角坐标。y:目的顶端坐标。nWidth:目的宽。nHeight:目的高。hSrcDC:源设备环境。xSrc:源左上角坐标。ySrc:源顶端坐标。dwRop:位处置操作。留意:将一个.BMP加载入PictureBox控件和运用Windows API函数 B

30、itBlt()添加图片之间有一点不同。当对一个图像运用BitBlt()时,PictureBox控件不能像运用LoadPicture方法那样去调整大小。假设有四个图像文件(pic1.jpgpic4.jpg),如图11-2所示,想让这四幅画自动地循环显示,每幅画以某种切换方式出现,单击“终了按钮时退出。图11-2 四幅画面切换的图像技巧设计步骤如下:1) 创建工程文件参与一个新的模块文件Module1及一个新的窗体Form1。在Form1中参与一个图片框Picture1,一个命令按钮Command1, 一个标签Label1和一个定时器控件Timer1。2) 各对象的属性如下: Begin VB.F

31、orm Form1AutoRedraw = -1 TrueCaption =四种图像特技演示ClientHeight = 1920ClientLeft = 6915ClientTop = 4620ClientWidth = 3540LinkTopic = Form1ScaleHeight = 128ScaleMode = 3 PixelScaleWidth = 236End Begin VBmand Command1Caption = 终了Height = 375 Left = 2280TabIndex = 2Top = 1440Width = 1215End Begin VB. Timer

32、Timer1 Left = 0 Top = 0End Begin VB.Picturebox PicturelAppearance = 0 FlatAutoRedraw = -1 TrueBackColor = &H80000005&ForeColor = &H80000008&Height = 1260Left = 2280ScaleHeight = 82ScaleMode = 3 PixelScaleWidth = 82TabIndex = 0Top = 0Width = 1260End Begin VB.label Label1AutoSize = -1 TrueCaption = 请稍

33、侯.Begin Property FontName = 宋体 Size = 12 Charset = 134 Weight = 400 Underline = 0 False Italic = 0 False Strikethrough = 0 FalseEnd PropertyHeight = 240Left = 0TabIndex = 1Top = 1440Width = 1080End 程序代码:Module1.bas 中的内容(声明BitBlt函数):Declare Function BitBlt Lib gdi32(ByVal hDestDC As Long, ByVal x As

34、Long, Byval y As Long, ByVal nWidth As Long, ByVal nHeight As long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Public Const SRCCOPY=&HCC0020 (2) Form1中的代码:在通用段中定义全局变量Const jpgfilemax=4 总共四个jpg文件Dim jpgfile(jpgfilemax) As String jpg文件的文件名数组Dim drawjpgmo

35、de(jpgfilemax) As Integer 各画显示时的切换方式Dim jpgnum,movestep, xmax, ymax, ymax As IntegerDim kxy As Singl e x,y两个方向的比例,程序运转时先作初始化任务Private Sub Command1_Click() 呼应鼠标单击事件Private Sub Form_Load() jpgnum=0 当前文件号为0,第一个文件 jpgfile(0)=App.Path+ Picl.jpg 四幅图片保管在当前工程文件所在的目录下 jpgfile(1)=App.Path+ Pic2.jpg jpgfile(2)

36、=App.path+ Pic3.jpg jpgfile(3)=App.path+ Pic4.jpg drawjpgmode(0)=1 drawjpgmode(1)=2 drawjpgmode(2)=3drawjpgmode(3)=4 movestep=0 步进参数 xmax=Form1.ScaleWidth/2 ymax=Form1.ScaleHeight/2 kxy=ymax/xmax Picture1.Picture=LoadPicture(jpgfile(jpgnum) 装入图像 Timer1.Interval=50 定时器启动End Sub切换画面任务在定时器中完成Private Su

37、b Timer1_Timer() hDestDC=Form1.hDC 目的DC hSrcDC=Picture1.hDC 源DC,画是从不可见的Picture1中拷贝到窗体的 drawflag=drawjpgmode(jpgnum) 当前画出现的方式 Select Case drawflag Case 1 从中间逐渐放大 Labell.Caption= 从中间逐渐放大 endmax=xmax 用于终了判别 x1=xmax-movestep w = movestep *2 y1 =CInt(ymax-movestep * kxy) h =Cint(2 * movestep * kxy) i =Bi

38、tBlt(hDestDC, x1, y1, w, h, hSrcDC, x1, y1, SrcCopy)Case 2 从左到右 Label1.Caption = “从左到右endmax= xmax w = movestep * 2 h = Form1.ScaleHeight i = BitBlt(hDextDC, 0, 0, w, h, hSrcDC, x1, y1, SrcCopy)Case 3 左右向中间 Label1.Caption= 从右到左 endmax =xmax w = movestep h = Form1.ScaleHeight i = BitBlt(hDestDC, 0, 0

39、, w , h , hSrcDC, 0 , 0 , SrcCopy) 左面部分 x1 = Form1.ScaleWidth - movestep i = BitBlt(hDestDC, x1, 0, (-1) * w , h ,hSrcDC , x1, 0 ,SrcCopy) 右面部分Case 4 栅条状 Label1.Caption = 栅条状 endmax = CInt (2 * xmax / 10) 共分为10条栅条 tempi = CInt (2 * xmax / 10) w = movestep h = Form1.ScaleHeight For ij = 0 To 9 i = Bi

40、tBlt(hDestDC , tempi * ij, 0 , w , h , hSrcDC , tempi * ij, 0 , SrcCopy) Next ijEnd SelectForm1.Refreshmovestep = movestep + 2 步进添加If movestep endmax Then 假设步进够大,画面都已显示,本张画终了切换 jpgnum = jpgnum + 1 进到下一张画 If jpgnum = jpgfilemax Then 假设5张画已显示完那么再从第一张开场 jpgnum = 0 End If movestep = 0 Picture1.Picture =

41、 LoadPicture(jpgfile (jpgnum) 装入图像End IfEnd Sub 11.3.3 LoadPicture函数和SavePicture语句1. LoadPicture 函数(1) 作用:将图形载入到窗体的Picture属性、PictureBox控件或Image控件。 (2) 语法:LoadPicture(Filename,Size,ColorDepth,x,y)(3) 参数阐明:FileName是可选的。选中此参数后,字符串表达式指定一个文件名,可以包括文件夹和驱动器。假设未指定文件名,LoadPicture去除图像或PictureBox控件。 Size可选变体。假设

42、FileName是光标或图标文件,该参数用于指定想要的图像大小。 ColorDepth可选变体。假设FileName是一个光标或图标文件,该参数用于指定想要的颜色深度,见表11-1。表11.1 指定颜色深度x 可选变体,假设运用y,那么必需运用。只需当ColorDepth设为vbLPCustom时,才运用x和y值。y 可选变体。运用同x注:赋值不带参数的LoadPicture将去除窗体、图片框及图像控件中的图形。为了加载PictureBox控件和Image 控件中显示的图形或加载作为窗体背景的图形,必需将LoadPicture的前往值赋给要显示该图片的对象的Picture属性。例如:Set P

43、icture =LoadPicture(Party.Bmp)Set Picture1.Picture=LoadPicture(Party.Bmp)假设要将图标赋予窗体,那么要把LoadPicture函数的前往值赋给Form1对象Icon属性,即Set Form1.Icon=LoadPicture(Myicon.Ico)图标也可以被赋予除Timer控件和Menu控件以外的其他控件的DragIcon属性,例如:Set Command1.DragIcon=LoadPicture(Myicon.Ico)运用LoadPicture可以将图形文件载入到系统剪贴板,程序代码如下:Clipboard.SetD

44、ata LoadPicture(Party.Bmp)2. LoadPicture函数实例 本例运用LoadPicture函数将图片加载到窗体的PictureBox控件并从控件上去除掉该图片。程序运转后,单击窗体,即可看到所加载的图片。对象属性设置如下: Begin VB.Form Form1 Caption =Form1 ClientHeight = 3540 ClientLeft = 1650 Clienttop = 1590 ClientWidth = 5010 LinkTopic = Form1 ScaleHeight = 3540 ScaleWidth = 5010 Begin VB.

45、PictureBox Picture1 Height = 615 Left = 2160 ScaleHeight = 555 ScaleWidth = 675 TabIndex = 0 Top = 1200 Width = 735 Begin VB.PictureBox Picture1 Height = 615 Left = 2160 ScaleHeight = 555 ScaleWidth = 675 Begin VB.PictureBox Picture1 Height = 615 Left = 2160 ScaleHeight = 555 ScaleWidth = 675 TabInd

46、ex = 0 Top = 1200 Width = 735 EndEnd 程序代码如下:Private Sub Form_Click() Dim Msg As String 声明变量 On Error Resume Next 设置错误句柄 Height =3990 Width =4890 设置高度和宽度 Picture1.Picture = LoadPicture (App.Path +arrow.CUR,vbLPCustom,vbLPColor,32,32) 加载光标 If Err Then Msg=Couldnt find the .cur file . MsgBox Msg 显示错误音讯

47、 Exit Sub 假设发生错误那么退出 End If Msg =Choose OK to clear the bitmap from the form. MsgBox Msg Picture1.Picture = LoadPicture() 去除PictureBoxEnd Sub11.3.4 Pset、Circle、Line绘图方法除了图形控件(Line控件、Shape控件)之外,VB还提供了创建图形的一些方法,见表11-2。 表11-2 创建图形方法 在恣意位置画出图形用图形方法创建图形是在代码中进展的,这就意味着,必需运转运用程序才干看到图形方法的结果。因此,对于创建界面的简单设计元素来

48、说,图形方法不能替代图形控件的作用。设计时改动图形控件的外观,比修正并测试图形方法的代码容易。以下简单引见Pset、Circle和Line方法。1. Pset方法(1) 作用:将屏幕上的点设置为指定颜色。(2) 语法:Object.PsetStep(x,y),Color。(3) 参数阐明:Object是可选的。即对象表达式,其值为“运用于列表中的对象。Step是可选的。该关键字用于指定相对于由CurrentX和CurrentY属性停工的当前图形位置的坐标。(x,y)是必选的。它是被设置点的坐标。Color是可选的。用于为点指定RGB颜色。(4) Pset方法实例:用Pset方法在窗体上画五色碎

49、纸。Sub Form_Click()Dim CX,CY ,Msg, xPos,yPos Declare Variables.ScaleMode=3 设置ScaleMode为像素DrawWidth=5设置DrawWidthForeColor=QBColor(4) 设置前景为红色FongtSize=24 设置点的大小CX=ScaleWidth/2得到程度中点CY=ScalseHeight/2得到垂直中点Cls 清窗体Msg=Happy New Year!CurrentX=CX-TextWidth(Msg)/2 程度位置CurrentY=CY-TextHeight(Msg) 垂直位置Print Ms

50、g 打印音讯Do xPos=Rnd*ScaleWidth 得到程度位置 yPos=Rnd*ScaleHeight得到垂直位置 Pset(xPos,yPos),QBColor(Rnd*15) 画五彩碎纸DoEvents 进展Loop 其他处置End Sub 2. Circle 方法(1) 作用:在对象上画圆、椭圆或圆弧。(2) 语法:Object.CircleStep(x,y), Radius,Color,Start,End,Aspect(3) 参数阐明:Object是可选的。对象表达式。Step是可选的。该关键字用于指定圆、椭圆或圆弧的中心。(x,y)是必选的。它是被设置为圆、椭圆或圆弧的中心

51、点的坐标。Radius是必选的。它是半径Color是可选的。它用于指定圆轮廓的RGB颜色。Start,End是可选的。当圆弧或部分圆或椭圆画完以后,Start和End指定弧的起点和终点位置。Aspect是可选的。用于指定圆的纵横尺寸比例。(4) Circle方法实例:用Circle方法在窗体中央画许多同心圆。Sub Form_Click()Dim CX,CY,Radius,Limit 声明为变量ScaleMode=3 以像素为单位CX=ScaleWidth /2X位置CY=Scaleheight /2Y位置If CXCY Then Limit=CY Else Limit =CXFor Radi

52、us=0 To LimitCircle(CX,CY),Radius,RGB(Rnd*255,Rnd*255,Rnd*255)Next Radius End Sub3. Line方法(1) 作用:在对象上画直线和矩形。(2) 语法:Object.LineStep(x1,y1)Step(x2,y2),Color,BF(3) 参数阐明:Object是可选的。对象表达式。Step是可选的。该关键字用于指定起点坐标。(x1,y1)是必选的。是直线或矩形的起点坐标。Step是可选的。该关键字用于指定相对于起点的终点坐标。 (x2,y2)是必需的。是终点坐标。 Color是可选的。它用于指定画线时用的RGB

53、颜色。B是可选的。假设选上该参数,那么可利用对角坐标画出矩形。F是可选的。假设运用了B选项,那么F选项规定矩形以矩形边框的颜色填充。不能不用B而用F。假设不用F而只用B,那么矩形用当前的FillColor和FillStyle填充。注:画衔接线时,前一条线的终点就是后一条线的起点。线的宽度取决于DrawWidth属性值。11.3.5 利用VB进展图像处置1. 在图片上平滑挪动文字要想使文字在图片上平滑挪动,可用以下方法实现:(1) 新建一工程文件,并创建Form1。在Form1上放置PictureBox控件Picture1,选定背景图片。另外,放置一Timer控件Timer1,设置Enabled

54、属性为True,设置Interval为100。(2) 单击选择Picture1,在PictureBox的底部放置Label控件Label1,并设置Lable1的BackStyle属性为0(透明),设置Caption为待挪动的字符串。各对象属性如下所示:Begin VB.Form Form1Caption=在图片上平滑挪动文字ClientHeight=5400ClientLeft=1650ClientTop=1590ClientWidth=8265LinkTopic=Form1ScaleHeight=5400ScaleWidth=8265Begin VB.PictureBox Picture1H

55、eight=4995Left=Picture=Form1.frx:0000ScaleHeight=4935ScaleWidth=7920TabIndex=0Top=180Width=7980Begin VB.Timer Timer1Interval=100Left=180Top=3960EndBegin Vb.Label Label1 Alignment=2 BackStyle =0 Caption=VB图像处置技术 Begin Property Font Name=宋体 Size=42 Charset=134 Weight=700Underline=0 Italic=0 Strikethro

56、ugh=0End Property ForeColor=&H000000FF& Height=1725 Left=945 TabIndex=1 Top=2925 Width=5775 EndEedEed程序代码如下:Private Sub Form_Load() label1.Top=Picture1.ScaleHeightEnd Sub Private Sub Timer1_Timer()istep=20Label1.Top=Label1.Top-istepIf Label1.Top 1500 And Height 1770 Then c3 = Form1.Width - c1 c4 = F

57、orm1.Height - c2 Picture1.Move Picture1.Left,Picture1.Top,Picture1.Width+c3,Picture1.Height+c4 c1 = Form1.Width c2 = Form1.Height Call pEnd IfPicture2.SetFocusEnd Sub以拖放方式滚动画面Private Sub Picture2_DragDrop(Source As Conctrol , x As Single , y As Single)If Picture2.HeightPicture.Height Then 经过计算机鼠标挪动位

58、置,调用VScroll_change事件ccc = VScroll1.Value + (d2 - y) If ccc = VScroll1.Max Then ccc= VScroll.MaxEnd If VScroll1.Value = ccc End If If Picture2.Width Picture1.Width Thenccc1 = HScroll1.Value + (d1 - x)If ccc1 = HScroll1.Max Then ccc1 = Hscroll1.MaxEnd IfHScroll1.Value = ccc1End IfEnd Sub设置功能键:光标键挪动画面,

59、加减号缩放画面Private Sub Picture2_KeyDown(KeyCode As Integer , Shift As Integer)Select Case KeyCode Case vbKeyLeft HScroll1.Value = Iif(HScroll.Value - HScroll1.SmallChang Picture1.Width ThenHscroll1.Value = Iif(HScroll.Value + HScroll.SmallChange HScroll_.Max,_HScroll1, Max , HScroll1.Value +HScroll1.Sma

60、llChang) End If Case vbKeyUpVScroll1.VScroll1,Value=IIf(VScroll.Value -VScroll1,Small.SmallChang_VScrall1 Value - VScroll1.SmallChange) Case vbKeyDownIf Picture2.Height Picture1.Height Then Vscroll1.Value=IIf(VScroll.Value +VScroll1.SmallChang VScroll1_.Max, VScroll1.Max , VScroll1.Value + VScroll.S

温馨提示

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

评论

0/150

提交评论