1、第第11章章 多媒体程序设计多媒体程序设计第第11章章 多媒体程序设计多媒体程序设计11.1 多媒体程序设计概要多媒体程序设计概要11.2 人机界面设计人机界面设计11.3 图形、图像程序设计技术图形、图像程序设计技术11.4 数字音频软件开发技术数字音频软件开发技术第第11章章 多媒体程序设计多媒体程序设计11.1 多媒体程序设计概要多媒体程序设计概要11.1.1 VB编程的基本概念1.三个重要概念(1)窗口。窗口是一种有边界的矩形区域,例如,VB窗口、Word的文档窗口、对话框窗口等。(2)事件。事件是通过鼠标、按键的操作、程序的控制或其他窗口所产生的操作或行为。(3)消息。发生事件时就引
2、发一条消息发送到操作系统。第第11章章 多媒体程序设计多媒体程序设计2.事件驱动模型事件驱动模型具有非过程化的特点,在事件驱动模型中,程序代码不是按照预定的顺序执行,而是在响应不同的事件时执行不同的代码片段。3.Windows的工作方式Windows操作系统通过给每一个窗口提供一个惟一的标识符来管理所有窗口。操作系统连续地监视每一个窗口的活动或事件信号。当事件发生时,就引发一条消息,操作系统处理该消息并广播给其他窗口。最后,每一个窗口根据自身处理该条消息的指令而采取适当的操作。第第11章章 多媒体程序设计多媒体程序设计11.1.2 VB中的对象对象是代码和数据的组合,可以作为一个单位来处理。对
3、象简单地说就是我们经常看到的各种窗口、按钮、文本框等。对象可以是应用程序的一部分,比如可以是控件或窗体。整个应用程序也是一个对象。具体地说,在VB中对象可分为全局对象和程序界面对象。1全局对象所谓全局对象,是指应用程序在程序的任何层次都可以访问的对象,共有以下几种:(1)APP:设计的应用程序,它的属性决定应用程序的标题、路径、可执行文件名以及帮助文件名等。第第11章章 多媒体程序设计多媒体程序设计(2)Clipboard:它就是Windows中的剪贴板,在VB应用程序中可用关键字Clipboard来访问它,从而操作其上的数据或图形,即将数据送到剪贴板上或从剪贴板上取回数据。(3)Screen
4、:计算机屏幕,也是应用程序窗口的“容器”,通过它可以设置应用程序的窗口在屏幕上的位置以及鼠标指针的形状。(4)Debug:调试窗口,当应用程序在VB集成环境中运行时它才显示出来,用于调试程序。(5)Printer:打印机,联机的打印机也是一个对象,应用程序可操作它在纸上输出结果。第第11章章 多媒体程序设计多媒体程序设计2.程序界面对象程序界面对象共有以下几种:(1)Form:窗体。VB工程中的每一个窗体都是独立的对象,类似控件对象,它们提供一些事件过程,可作为程序界面或对话框。绝大多数情况下,我们把窗体当作在其中能放置控件的框架,它是应用程序界面中的部件或对话框中的部件的“容器”。(2)Co
5、ntrol:控制部件(控件)。这是和用户交互的标准部件,命令按钮、文本框、列表框、滚动条、菜单等都属此类。除菜单控件外,所有控件都可用工具箱中的工具“画”出来。菜单控件是用菜单设计窗口作为工具设计出来的。界面设计就是在窗体上放置控件并指定其属性。第第11章章 多媒体程序设计多媒体程序设计(3)数据库访问对象:数据库是对象,并且还包含其他对象,如字段、索引等。VB的专业版可以操作数据库,数据访问对象是为访问数据库而设的。11.1.3 VB程序设计要素通常,一个VB程序至少含有一个窗体,在这个窗体中可以包含一个或多个对象,并以控件的形式存在。控件不仅拥有属性,还拥有事件过程,它决定当控件有一个或几
6、个操作行为激活时所发生的事情。第第11章章 多媒体程序设计多媒体程序设计1.属性(Properties)的设置属性是一个对象的性质,它决定对象的外观和一般行为。对象的属性中,有的属性在设计时可更改,可通过属性窗口加以设置;有的属性是系统赋予对象的,只能在运行时访问这种属性,但不可更改;有的属性仅在运行时才可访问和更改。后两种属性出现在属性窗口的列表中。在程序中,访问对象的属性的格式如下:对象名.属性其中,对象名和属性间用“.”连接,若省略对象名,则指当前具有焦点的对象。上述组合可看作是一个变量。即可对其赋值(除非只读属性),也可将其值赋予别的变量。第第11章章 多媒体程序设计多媒体程序设计2.
7、事件(Event)的产生事件就是系统可以感知的用户操作信息,可以看作是系统对对象的响应。事件通常触发VB程序中的一段代码。事件可分为鼠标事件、键盘事件和其他事件。每个对象都可引发事件,在VB中都已经准备好对应的事件过程,程序员只需编写响应事件的代码。3.函数(Function)、过程(Procedure)和方法(Method)的作用(1)函数。函数是包含操作数据的程序语句集。当我们需要完成某种任务时,就要调用过程;当我们需要返回值时,就调用函数。VB包括几十种函数,这些函数执行通用的操作,如修改字符串的前导空格或去掉其尾部空格或计算一个角度的正弦。第第11章章 多媒体程序设计多媒体程序设计(2
8、)过程。在VB中,每个对象可引发的事件过程的模板已经准备好,在设计时,双击控件,可打开与此控件有关的代码窗口,在过程下拉列表框中,列出了这个控件可能引发的事件对应的过程。选择某一过程可打开该过程的代码模板。另一种过程就是函数,和对象相联系的函数用于改变或设置对象的某种属性。例如,LoadPicture函数可设置窗体的Picture属性。(3)方法。VB中的窗体和控件对象给我们提供了一种特殊的过程,它在程序控制下工作,可以看作是对象的动作。在面向对象程序设计中,这样的过程叫做方法。方法是一种特殊的过程,它和过程的差别是它从属于特定的对象,因此调用时必须指明对象。方法的调用语法为第第11章章 多媒
9、体程序设计多媒体程序设计对象名.方法参数对象名和方法之间用“.”连接。若省略对象名,则对象指的是当前的活动对象。例如,调用Debug对象的Print方法,可用语句Debug.Print4.模块(Module)组织 VB应用程序的代码是以分层方式组织并存储在模块中的。典型的应用程序应包括若干模块:应用程序中每个窗体的窗体模块、共享代码的可选标准模块以及可选的类模块。每个模块包含若干含有代码的过程:Event事件过程、Sub子过程或Function函数以及Property属性过程。第第11章章 多媒体程序设计多媒体程序设计 图11-1 VB的常用控件和窗体(a)控件;(b)窗体第第11章章 多媒体
10、程序设计多媒体程序设计对于每个标准模块、类模块和窗体模块都可包含声明及过程。(1)声明:可以将常数、类型、变量和动态链接库(DLL)过程的声明放在窗体、类或标准模块的模块级。(2)过程:可以是Sub、Function或Property过程。它包含可以作为单元来执行的代码片段。11.1.4 VB中的常用控件和窗体VB的常用控件如图11-1(a)所示,其他要添加的控件可在菜单项“工程/部件”中选择添加。VB的常用窗体(Form)如图11-1(b)所示。第第11章章 多媒体程序设计多媒体程序设计11.2 人机界面设计人机界面设计11.2.1 多媒体图形用户界面的特点图形用户界面(Graphics U
11、ser Interface,GUI)专门用来代表以图形方式工作的窗口,如图标、菜单、按钮、滚动条、对话框等界面部件,也包括能够移动、定位、点取图形目标的定位设备的界面。多媒体图形用户界面是在图形用户界面的基础上,再加上一些其他媒体(如多媒体音频、视频、动画等)的特性。第第11章章 多媒体程序设计多媒体程序设计多媒体图形用户界面的主要特点如下:(1)广泛使用窗口、图标、菜单、按钮、对话框等基本界面部件来表示应用目标,这些图形目标的表示都具有直观、形象、可视等特点。其中图标是表示把一个应用程序缩到最小时所代表的程序内部功能、动作的可视图形符号。(2)可使用图形部件形象地表示感兴趣的目标,使系统完成
12、的操作或命令能用逼真的模拟、比喻来表示,而且所有感兴趣的目标在GUI界面上被连续显示出来。(3)有高度的交互性。每一输入动作都直接被系统解析,动作的结果可以是文字、声音、图像、视频或动画等多媒体表现形式,并可以立即反馈给用户。而对于其他交互方式,要等到全部输入完成后才能被系统解析,并产生系统响应。第第11章章 多媒体程序设计多媒体程序设计(4)支持鼠标类定位设备完成光标的移动和目标的选取。因此,只要操纵鼠标器或按下按钮即可代替文本界面方式中的复杂语法和命令键入,在GUI方式下的识别和点取目标比命令方式下记住并键入命令要容易和快速得多。(5)提供了快速的、增量式的可逆转的操作,并且所有操作过程效
13、果都可观察到。(6)以一致的方式完成对所有目标的显示和操纵。一致的显示和操纵方式减少了用户的记忆、学习负担和出错率,也有利于标准化的人机界面的构成。第第11章章 多媒体程序设计多媒体程序设计(7)提供系统预验证功能,使得只有有效的交互才能发生效果。如果用户指向一个对象的动作对当前的任务是无意义的,则显示屏上就无反应。(8)提供了对用户出错的保护机制和强有力的帮助机制。GUI界面使用比喻、模拟日常操作方式,因此易学易用,本身不易出错,并且一旦出错,结果可立即显示。而且用户操作是可恢复的,即具备UNDO功能。这些功能减少了用户对可能错误的担心,使用户能把精力集中在任务上。另外,强有力的帮助机制还可
14、以帮助用户正确操纵和使用系统。第第11章章 多媒体程序设计多媒体程序设计11.2.2 利用VB开发图形用户界面首先要了解界面设计的一般性原则,最为重要的有:(1)界面要具有一致性。一致性原则在界面设计中最容易被违反,同时也最容易修改和避免。例如,在菜单和联机帮助中必须使用相同的术语;对话框必须具有相同的风格。(2)常用操作要有捷径。常用操作的使用频度大,应该减少操作序列的长度,使常用操作具有捷径,使界面在功能实现上简捷和高效。例如,为文件的常用操作(如打开、关闭、保存等)设置快捷键。第第11章章 多媒体程序设计多媒体程序设计(3)提供简单的错误处理。系统要有错误处理的功能,在出错时,系统应能检
15、测出错误,并且提供简单的容易理解的错误处理功能。(4)提供信息反馈。对常用的操作和简单的操作可以不要反馈,但对不常用操作和至关重要的操作,系统应该提供信息的反馈。(5)操作可逆。操作可逆对于不具备专门知识的操作人员相当有用。可逆的动作可以是单个操作,或者是一个相对独立的操作序列。(6)设计良好的联机帮助。对大多数不熟练用户来说,联机帮助具有非常重要的作用。第第11章章 多媒体程序设计多媒体程序设计11.2.3 菜单设计的原则和编程技术菜单设计有如下的一般性原则:(1)按照系统的功能来组织菜单,分配菜单界面的宽度和深度,使菜单层次结构和系统功能层次结构相一致;(2)选用广而浅的菜单树,一般菜单嵌
16、套层次不宜超过四层,每级菜单项不宜超过79项;(3)根据菜单选项的含义进行分组,并且按一定的规则排序;(4)菜单项的安排应有利于提高菜单选取速度;(5)常用选项要设置快捷键。第第11章章 多媒体程序设计多媒体程序设计结合以上原则,VB菜单编程有以下6方面的技术和技巧。1.菜单选项的分组在VB中,菜单选项的分组是通过菜单栏分隔横线实现的。在菜单的一定位置增加一个Caption属性为“_”的菜单项,则菜单相应位置上就表现为一条横线。2.常用选项快捷键的设置打开菜单设计窗口(Menu Design Window),对应于每个菜单选项有相应的快捷键列表。但具有子菜单的菜单或者顶层菜单的快捷键要按Win
17、dows的界面设计原则设置,顶层菜单的快捷键形式是“Alt+字母键”。第第11章章 多媒体程序设计多媒体程序设计3.菜单选项的允许与禁止、可见与隐藏菜单选项的允许与禁止是通过改变选项的Enabled属性实现的。举例来说,假设菜单选项名为Mainmen,则禁止该选项可以用Mainmen.Enabled=False。同样,隐藏一个选项可用Mainmen.Vsible=False来实现,恢复时用Mainmnue.Visible=True实现。第第11章章 多媒体程序设计多媒体程序设计4.弹出式菜单的实现(PopupMenu Method)弹出式菜单是在程序界面的一定区域内按鼠标键后出现的菜单,多用于
18、实现系统的附加或增强功能。弹出式菜单的实现要用到下拉式菜单设计的技术和PopupMenu方法。具体做法是:在菜单设计框里设计好相应窗体的弹出式菜单(注意,要弹出的菜单必须至少有一个子菜单,因而这个菜单不能有快捷键,并且Checked属性必须是False),再把弹出式菜单的Visible属性改为False。第第11章章 多媒体程序设计多媒体程序设计在具有弹出式菜单的窗体的Form_Click中加入以下代码(假设弹出式菜单的Name属性是Mnuexample):Sub Form_Click()PopupMenu MnuExampleEnd Sub 如果要求只有按下鼠标左键或右键才能激活菜单,就必须
19、在form_mousedown 里加入以下代码:Sub Form_MouseDown(Button As Integer,shift As Integer,x As Single,y As Single)第第11章章 多媒体程序设计多媒体程序设计If Button=2 Then Button=2 表示鼠标右键PopupMenu MenuExampleEnd IfPopupMenu的完整语法是form.PopupMenu MenuNameflags,x,y改变flags的值可以控制弹出式菜单的表现形式。flags有两组值:一组值用来控制菜单的显示方式,包括PopupMenu_Leftalign、
20、PopupMenu_CenterAlign和PopupMenu_RightAlign,分别表示以x为左边界、以x为中心和以x为右边界的显示方式,缺省为以x为左边界。第第11章章 多媒体程序设计多媒体程序设计一 组 值 用 来 控 制 菜 单 项 的 选 中 方 式,包 括PopupMenu_LeftButton和PopupMenu_RightButton,分别表示左键选中和右键选中,两个值可同时使用,左键选中为缺省方式。flags的值由上面的两组值经过or运算得出。例如,要左对齐显示并且以左键选中为准,则应有。flags=PopupMenu_LeftAlign or PopupMenu_Lef
21、tButton x和y用来定义菜单弹出的位置,缺省是鼠标点中的位置。第第11章章 多媒体程序设计多媒体程序设计5.菜单项的其他属性用Alt+字母键激活顶层菜单,或者在菜单激活后用字母键激活一个菜单项,必须使用&。&用在菜单项的标题属性(Caption)里。它的用法和作用与在用C语言编制Windows程序中的用法和作用相同。如果希望顶层菜单之间的间隔大一些,或者某个顶层菜单出现在菜单条的最右端,就要用到标题属性是空格的菜单。如一个菜单的标题是由多个空格组成的,那么这个菜单在菜单条上就占用跟空格的个数相应的空间,并且它后面的菜单也顺序地后移。第第11章章 多媒体程序设计多媒体程序设计6.位图菜单在
22、通常的程序中菜单总是以文本的方式存在,有时候显得单调乏味,如果能在菜单中加入位图图形,将会极大地增加用户的使用兴趣。下面介绍如何使用位图制作菜单选项。位图菜单的创建,要用到Windows应用程序接口(API)函数,需要将这些函数的声明包含在应用程序的标准模块(Module1.Bas)中,具体的内容见下面的程序。创建位图菜单的基本思想如下:(1)使用函数GetsubMenu来提取子菜单项的句柄,并通过使用函数CreateCompatibleDC来创建一个兼容的设备环境描述表。第第11章章 多媒体程序设计多媒体程序设计(2)在一个循环过程中通过使用CreateCompatibleBitmap函数、
23、SelectObject函数以及BitBlt函数来分别将针对各个菜单项所载入的位图选入到兼容设备环境中。载入位图的方法很多,在下面的程序中,我们在窗体上设置了4个图片框控件(PictureBox),使用它门载入4个预设的图标来作为菜单选项位图的源文件。当然也可以使用其他的方法,例如,在程序中使用LoadPicture函数来从磁盘装载位图。(3)通过ModifyMenu函数绘制真正的位图菜单选项。(4)使用Deletedc函数来释放设备环境,以便其他的程序可以使用这些设备。第第11章章 多媒体程序设计多媒体程序设计工程文件的建立步骤如下:(1)在Visual Basic中建立一个新的工程,采用缺
24、省的方法建立Form1。(2)创建一个新的模块,采用缺省的方法建立Module1.Bas。(3)在Form1上添加4个图片框控件(使用控件数组),将它们的Name属性设置为Picture1,将它们的Index属性依次设置为0、1、2、3,将它们的AutoRedrew属性、AutoreSize属性设置为Ture,将它们的Appearance属性、BorderStyle属性设置为0,Visble属性设置为False。第第11章章 多媒体程序设计多媒体程序设计(4)将Open.Bmp、About.Bmp、Help.Bmp、Quit.Bmp 4个图标文件赋给上面的4个图片框控件的Picture属性。(
25、5)在Form1上添加一个菜单项,将其标题设置为“主菜单(&F)”,名称设置为Mnumain。在其下添加4个子菜单项,分别将这4个子菜单项的名称设置为“打开(&O)”。将“关于(&A),“帮助(&H)”及“退出(&E)”的名称设置为“Mnumain_Select”,并将这4个子菜单项的索引相应设置为0、1、2、3。第第11章章 多媒体程序设计多媒体程序设计11.3 图形、图像程序设计技术图形、图像程序设计技术11.3.1 VB坐标系统及图形格式1.坐标系统概述在进行图形操作时,要使用绘图区或容器的坐标系统。如何用坐标系统定义窗体和控件在应用程序中的位置,是很重要的。在VB中,坐标系统是一个二维
26、网格,可定义屏幕上、窗体中或其他容器中的位置。使用窗体中的坐标(x,y),可定义网格上的位置。其中x值是沿x轴的位置,最左端的值是0;y值是沿y轴的位置,最上端的值是0。第第11章章 多媒体程序设计多媒体程序设计对于VB坐标系统,应注意以下几点:(1)当移动或调整控件的大小时,要使用控件容器的坐标系统。直接在窗体上绘制对象时,窗体就是容器;在框架或图片框里绘制控件时,框架或控件是容器。(2)所有的图形和Print方法都要使用容器的坐标系统。(3)一些用来调整窗体大小或移动窗体的语句,可设置窗体的位置和大小。第第11章章 多媒体程序设计多媒体程序设计 (4)当创建用来调整窗体大小或移动窗体的代码
27、时,应先检查Screen对象的Height属性和Width属性,以确保窗体在屏幕上大小合适。(5)屏幕的左上角总是(0,0)。任何容器的缺省坐标系统都是由容器的左上角(0,0)坐标开始的。(6)沿坐标轴定义位置的测量单位,统称为刻度。在VB中,坐标系统的每个轴都有自己的刻度。坐标轴的方向、起点和坐标系统的刻度都是可以改变的。(7)所有VB的移动、调整大小和图形绘制语句都根据缺省规定使用“缇”为单位。第第11章章 多媒体程序设计多媒体程序设计2.VB的图形格式VB可以支持的图形格式有位图(.bmp)、设备独立位图文件(.dib)、图标(.ico)文件、光标(.cur)文件、元(.wmf)文件、增
28、强的元文件(.emf)、GIF(.gif)文件以及JPEG(.jpg)文件。11.3.2 PaintPicture方法和BitBlt Api函数PaintPicture的基本功能是传输图像块。它能快速地将两幅位图进行合并;能将位图的全部或某一部分快速剪切并粘贴到其他地方;能将位图自动延伸或压缩以适应新的环境;能在屏幕上不同位置之间、屏幕与内存之间传递位图;它采用32位三元光栅操作代码(Rasterop)在源位图、选定的刷子位图和目标位图之间进行颜色组合,生成目标位图中的最终颜色;它将13个常用的Rasterop操作以内部常量形式给出,不需任何声明。第第11章章 多媒体程序设计多媒体程序设计1.
29、PaintPicture方法(1)作用:在Form,PictureBox或Printer上绘制图形文件的内容。(2)语法:Object.PaintPicture Picture,x1,y1,Width1,Height1,x2,y2,Width2,Height2,Opcode(3)参数说明:Object是可选的。一个对象表达式的值可以为窗体、PictureBox控件或Printer。如果省略Object,则为当前具有焦点的对象。Picture是必选的。要绘制到Object上的图形源、Form或PictureBox必须是Picture属性。第第11章章 多媒体程序设计多媒体程序设计Width1是可
30、选的(目标位图参数)。它用于指示Picture的目标宽度。Height1是可选的(目标位图参数)。它用于指示Picture的目标高度。x2,y2是可选的(源位图参数)。它用于指示Picture内剪贴区的坐标(x轴和y轴)。Width2是可选的(源位图参数)。它用于指示Picture内剪贴区的源宽度。Height2是可选的(源位图参数)。它用于指示Picture内剪贴区的源高度。第第11章章 多媒体程序设计多媒体程序设计 Opcode是可选的。它是长型值或仅有位图使用的代码,表示源图与目标位图(或刷子位图)的组合关系,用来定义在将Picture绘制到Object上时对Picture执行的位操作。
31、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 Val 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 第第11章章 多媒体程序设计多
32、媒体程序设计(3)参数说明:hDestDC:目标设备环境。x:目标左上角坐标。y:目标顶端坐标。nWidth:目标宽。nHeight:目标高。hSrcDC:源设备环境。xSrc:源左上角坐标。ySrc:源顶端坐标。dwRop:位处理操作。第第11章章 多媒体程序设计多媒体程序设计注意:将一个.BMP加载入PictureBox控件和使用Windows API函数 BitBlt()添加图片之间有一点不同。当对一个图像使用BitBlt()时,PictureBox控件不能像使用LoadPicture方法那样去调整大小。假设有四个图像文件(pic1.jpgpic4.jpg),如图11-2所示,想让这四幅
33、画自动地循环显示,每幅画以某种切换方式出现,单击“结束”按钮时退出。第第11章章 多媒体程序设计多媒体程序设计图11-2 四幅画面切换的图像技巧第第11章章 多媒体程序设计多媒体程序设计设计步骤如下:1)创建项目文件加入一个新的模块文件Module1及一个新的窗体Form1。在Form1中加入一个图片框Picture1,一个命令按钮Command1,一个标签Label1和一个定时器控件Timer1。2)各对象的属性如下:Begin VB.Form Form1AutoRedraw =-1 TrueCaption =四种图像特技演示ClientHeight =1920ClientLeft =691
34、5第第11章章 多媒体程序设计多媒体程序设计ClientTop =4620ClientWidth =3540LinkTopic =Form1ScaleHeight =128ScaleMode =3 PixelScaleWidth =236End Begin VB.Command Command1Caption =结束Height =375 第第11章章 多媒体程序设计多媒体程序设计Left =2280TabIndex =2Top =1440Width =1215End Begin VB.Timer Timer1 Left =0 Top =0End 第第11章章 多媒体程序设计多媒体程序设计Be
35、gin VB.Picturebox PicturelAppearance =0 FlatAutoRedraw =-1 TrueBackColor =&H80000005&ForeColor =&H80000008&Height =1260Left =2280ScaleHeight =82ScaleMode =3 Pixel第第11章章 多媒体程序设计多媒体程序设计ScaleWidth =82TabIndex =0Top =0Width =1260End Begin VB.label Label1AutoSize =-1 TrueCaption =请稍侯.Begin Property Font第
36、第11章章 多媒体程序设计多媒体程序设计Name =宋体 Size =12 Charset =134 Weight =400 Underline =0 False Italic =0 False Strikethrough =0 FalseEnd Property第第11章章 多媒体程序设计多媒体程序设计Height =240Left =0TabIndex =1Top =1440Width =1080End 程序代码:Module1.bas 中的内容(声明BitBlt函数):Declare Function BitBlt Lib gdi32(ByVal hDestDC As Long,ByVa
37、l x As 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第第11章章 多媒体程序设计多媒体程序设计(2)Form1中的代码:在通用段中定义全局变量Const jpgfilemax=4 总共四个jpg文件Dim jpgfile(jpgfilemax)As String jpg文件的文
38、件名数组Dim drawjpgmode(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()第第11章章 多媒体程序设计多媒体程序设计 jpgnum=0 当前文件号为0,第一个文件 jpgfile(0)=App.Path+Picl.jpg 四幅图片保存在当前工程文件所在的目录下 jpgfile
39、(1)=App.Path+Pic2.jpg jpgfile(2)=App.path+Pic3.jpg jpgfile(3)=App.path+Pic4.jpg drawjpgmode(0)=1 drawjpgmode(1)=2 drawjpgmode(2)=3第第11章章 多媒体程序设计多媒体程序设计drawjpgmode(3)=4 movestep=0 步进参数 xmax=Form1.ScaleWidth/2 ymax=Form1.ScaleHeight/2 kxy=ymax/xmax Picture1.Picture=LoadPicture(jpgfile(jpgnum)装入图像 Time
40、r1.Interval=50 定时器启动End Sub第第11章章 多媒体程序设计多媒体程序设计切换画面工作在定时器中完成Private Sub Timer1_Timer()hDestDC=Form1.hDC 目标DC hSrcDC=Picture1.hDC 源DC,画是从不可见的Picture1中拷贝到窗体的 drawflag=drawjpgmode(jpgnum)当前画出现的方式 Select Case drawflag Case 1 从中间逐步放大 Labell.Caption=从中间逐步放大 endmax=xmax 用于结束判断第第11章章 多媒体程序设计多媒体程序设计 x1=xmax
41、-movestep w=movestep*2 y1=CInt(ymax-movestep*kxy)h=Cint(2*movestep*kxy)i=BitBlt(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)第第11章章 多媒体程序设计多媒体程序设计Case 3 左右向中间 Label1.Caption=从右到左 end
42、max=xmax w=movestep h=Form1.ScaleHeight i=BitBlt(hDestDC,0,0,w,h,hSrcDC,0,0,SrcCopy)左面部分 x1=Form1.ScaleWidth-movestep i=BitBlt(hDestDC,x1,0,(-1)*w,h,hSrcDC,x1,0,SrcCopy)右面部分第第11章章 多媒体程序设计多媒体程序设计Case 4 栅条状 Label1.Caption=栅条状 endmax=CInt(2*xmax/10)共分为10条栅条 tempi=CInt(2*xmax/10)w=movestep h=Form1.Scale
43、Height For ij=0 To 9 i=BitBlt(hDestDC,tempi*ij,0,w,h,hSrcDC,tempi*ij,0,SrcCopy)Next ijEnd Select第第11章章 多媒体程序设计多媒体程序设计Form1.Refreshmovestep=movestep+2 步进增加If movestep endmax Then 若步进够大,画面都已显示,本张画结束切换 jpgnum=jpgnum+1 进到下一张画 If jpgnum =jpgfilemax Then 若5张画已显示完则再从第一张开始 第第11章章 多媒体程序设计多媒体程序设计jpgnum=0 End
44、If movestep=0 Picture1.Picture=LoadPicture(jpgfile(jpgnum)装入图像End IfEnd Sub 第第11章章 多媒体程序设计多媒体程序设计11.3.3 LoadPicture函数和SavePicture语句1.LoadPicture 函数(1)作用:将图形载入到窗体的Picture属性、PictureBox控件或Image控件。(2)语法:LoadPicture(Filename,Size,ColorDepth,x,y)(3)参数说明:FileName是可选的。选中此参数后,字符串表达式指定一个文件名,可以包括文件夹和驱动器。如果未指定文
45、件名,LoadPicture清除图像或PictureBox控件。第第11章章 多媒体程序设计多媒体程序设计 Size可选变体。如果FileName是光标或图标文件,该参数用于指定想要的图像大小。ColorDepth可选变体。如果FileName是一个光标或图标文件,该参数用于指定想要的颜色深度,见表11-1。第第11章章 多媒体程序设计多媒体程序设计表11.1 指定颜色深度常 量 值 描 述 vbLPDefault 0 如果使用指定文件,则为最佳可用匹配 vbLPMonochrome 1 2 色 vbLPVGAColor 2 16 色 vbLPColor 3 256 色 第第11章章 多媒体程
46、序设计多媒体程序设计x 可选变体,如果使用y,则必须使用。只有当ColorDepth设为vbLPCustom时,才使用x和y值。y 可选变体。使用同x注:赋值不带参数的LoadPicture将清除窗体、图片框及图像控件中的图形。为了加载PictureBox控件和Image 控件中显示的图形或加载作为窗体背景的图形,必须将LoadPicture的返回值赋给要显示该图片的对象的Picture属性。例如:Set Picture=LoadPicture(Party.Bmp)Set Picture1.Picture=LoadPicture(Party.Bmp)第第11章章 多媒体程序设计多媒体程序设计如
47、果要将图标赋予窗体,则要把LoadPicture函数的返回值赋给Form1对象Icon属性,即Set Form1.Icon=LoadPicture(Myicon.Ico)图标也可以被赋予除Timer控件和Menu控件以外的其他控件的DragIcon属性,例如:Set Command1.DragIcon=LoadPicture(Myicon.Ico)使用LoadPicture可以将图形文件载入到系统剪贴板,程序代码如下:Clipboard.SetData LoadPicture(Party.Bmp)第第11章章 多媒体程序设计多媒体程序设计2.LoadPicture函数实例 本例使用LoadPi
48、cture函数将图片加载到窗体的PictureBox控件并从控件上清除掉该图片。程序运行后,单击窗体,即可看到所加载的图片。对象属性设置如下:Begin VB.Form Form1 Caption =Form1 ClientHeight =3540 ClientLeft =1650 第第11章章 多媒体程序设计多媒体程序设计 Clienttop =1590 ClientWidth =5010 LinkTopic =Form1 ScaleHeight =3540 ScaleWidth =5010 Begin VB.PictureBox Picture1 Height =615 Left =216
49、0 第第11章章 多媒体程序设计多媒体程序设计ScaleHeight =555 ScaleWidth =675 TabIndex =0 Top =1200 Width =735 Begin VB.PictureBox Picture1 Height =615 Left =2160 ScaleHeight =555 ScaleWidth =675 第第11章章 多媒体程序设计多媒体程序设计 Begin VB.PictureBox Picture1 Height =615 Left =2160 ScaleHeight =555 ScaleWidth =675 TabIndex =0 Top =12
50、00 Width =735 EndEnd第第11章章 多媒体程序设计多媒体程序设计 程序代码如下: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.第第11章章 多媒体程序设计多媒体程序设计