1.3k likes | 1.58k Views
Visual Basic 程序设计. 第 6 章 图形图像和多媒体 应用程序设计方法. 5.1 指针式时钟和 VCD 程序任务 随着多媒体技术发发展,图形程序界面和多媒体程序开发已成为目前非常流行的一种程序开发方式。 VB 具有强大的图形处理能力和多媒体开发功能,利用它可以在很短的时间内绘制恩已形状的图形,开发出包括各种功能特效的多媒体应用程序。 本章通过指针式时钟和 VCD 播放器持续设计实例介绍图形图像和多媒体应用程序设计的基本方法。. 6.1.1 指针式时钟程序.
E N D
Visual Basic程序设计 第 6 章 图形图像和多媒体 应用程序设计方法
5.1 指针式时钟和VCD程序任务 随着多媒体技术发发展,图形程序界面和多媒体程序开发已成为目前非常流行的一种程序开发方式。VB具有强大的图形处理能力和多媒体开发功能,利用它可以在很短的时间内绘制恩已形状的图形,开发出包括各种功能特效的多媒体应用程序。 本章通过指针式时钟和VCD播放器持续设计实例介绍图形图像和多媒体应用程序设计的基本方法。
6.1.1 指针式时钟程序 1.任务概述:VB提供了图形控件和图形方法两种绘图方式。指针时钟程序主要利用图形控件设计表盘,通过时钟控件控制时钟的转动,采用图形方法动态移动指针。所用控件如图所示: Picture图片框控件 Image图像框控件 Line线条控件 Shape形状控件
3. 代码设计 '在代码编辑器窗口的"通用"部分声明π常量 Const Pi = 3.141592653 Private Sub Form_Load() '设置用户的坐标系统 Form1.Scale (-14, 14)-(14, -14) End Sub
3. 代码设计 Private Sub Timer1_Timer() Dim X As Integer Dim Y As Integer Dim Sec, Min, Hr As Integer '计算当前的秒、分、时的数值 Sec = Second(Time) Min = Minute(Time) Hr = Hour(Time) '清空窗体 Form1.Cls
3. 代码设计 '绘制秒针,其中用到的数字9起放大作用 Form1.DrawWidth = 2 '设置线条的宽度 X = 9 * Cos((Sec - 15) * Pi / 30) '计算线条另一端点的x坐标 Y = 9 * Sin(-(Sec - 15) * Pi / 30) '计算线条另一端点的y坐标 Form1.Line (0, 0)-(X, Y), vbRed '画一条红线表示秒针 '绘制分针,其中用到的数字8起放大作用 Form1.DrawWidth = 3 '设置线条的宽度 X = 8 * Cos((Min - 15) * Pi / 30) '计算线条另一端点的x坐标 Y = 8 * Sin(-(Min - 15) * Pi / 30) '计算线条另一端点的y坐标
3. 代码设计 '绘制时针,其中用到的数字6起放大作用 Hr = Hr + Min / 60 Form1.DrawWidth = 5 '设置线条的宽度 X = 6 * Cos((Hr - 3) * Pi / 6) '计算线条另一端点的x坐标 Y = 6 * Sin(-(Hr - 3) * Pi / 6) '计算线条另一端点的y坐标 Form1.Line (0, 0)-(X, Y) '画线表示分针 End Sub [演示]
6.1.2 VCD播放器应用程序 1. 任务概述 利用VB可以编写多媒体播放软件。本程序的任务是能够浏览要播放的文件,并播放 .avi, .dat, .waf等格式的多媒体文件。程序具有快进、快退、暂停、弹碟等基本功能。运行界面如图所示。
2. 界面设计 (1)创建一个“标准EXE”工程,选中“工程”菜单中的“部件”选项,在弹出的“部件”对话框中选择“Microsoft Multimedia Control”, “Microsoft Common Dialog Control 6.0”和 “Microsoft Windows Common Control 6.0”,将CommonDialog控件、MMControl控件和Slider控件添加到根据箱中。 (2)窗体添加“命令”按钮和“关闭按钮”。 (3)窗体添加CommonDialog 控件、Picture控件、MMControl控件和Slider控件。
3. 代码设计 (1)窗体Load事件代码 Private Sub Form_Load() '将Picture1设置为视频回放的界面 MMControl1.hWndDisplay = Picture1.hWnd End Sub
3. 代码设计 (2)"打开"按钮Click事件代码 Private Sub Command1_Click() '在未选择文件时,文件名为空字符 CommonDialog1.FileName = "" '设置文件的过滤方式,可显示文件名为.wav和.dat的文件 CommonDialog1.Filter = "(*.wave)│*.wav│(vcd*.dat)│*.dat" '初始的文件过滤方式为*.wav CommonDialog1.FilterIndex = 2 '建立打开文件的通用对话框 CommonDialog1.ShowOpen '打开一个文件后关闭前一此被打开的多媒体设备 MMControl1.Command = "Close"
3. 代码设计 '判断如果打开的文件是*.wav格式,则执行下面的语句 If CommonDialog1.FilterIndex = 2 Then '设置多媒体设备类型为WaveAudio MMControl1.DeviceType = "WaveAudio" '设置打开的文件为通用对话框中选择的文件 MMControl1.FileName = CommonDialog1.FileName '打开文件 MMControl1.Command = "Open" MMControl1.Command = "Play" '设置Slider控件的最小值 Slider1.Min = 0 '设置Slider的最大值为文件的长度 Slider1.Max = MMControl1.Length
3. 代码设计 '如果打开的文件是*.dat格式,则执行下面的语句 ElseIf CommonDialog1.FilterIndex = 1 Then '设置多媒体设备类型为WaveAudio MMControl1.DeviceType = "MpegVideo" '设置打开的文件为通用对话框中选择的文件 MMControl1.FileName = CommonDialog1.FileName '打开文件 MMControl1.Command = "Open" MMControl1.Command = "Play" '设置Slider控件的最小值 Slider1.Min = 0 '设置Slider的最大值为文件的长度 Slider1.Max = MMControl1.Length End If End Sub
3. 代码设计 (3)MMControl1控件的StatusUpdate事件代码 Private Sub MMControl1_StatusUpdate() '设置Sider1控件的滑杆位置 With MMControl1 If DeviceID <> 0 Then If Slider1.Value <> MMControl1.Position Then Slider1.Value = MMControl1.Position End If End With End Sub
3. 代码设计 (4)Slider控件的Scroll事件代码 Private Sub Slider_Scroll() '通过Slider选择文件的播放位置 MMControl1.To Slider.Value MMControl1.Command = "Seek" MMControl1.Command = "Play" End Sub
3. 代码设计 '(5)窗体的Unload事件代码 Private Sub Form_Unload(Cancel As Integer) '关闭多媒体设备 MMControl1.Command = "Stop" MMControl1.Command = "Close" End Sub '(6)"关闭"按钮的Click事件代码 Private Sub Command2_Click() '退出应用程序 End End Sub
6.2 VB坐标系统和颜色 在VB中,对象存放在它的容器内。例如,窗体在屏幕中,屏幕是窗体的容器。在窗体内绘制对象时,窗体是容器。在图片框在绘制图形,图片框是窗体。对象在容器在的定位需要使用容器的坐标系统。
6.2.1 坐标系统 1. 窗体的缺省坐标系 构成一个坐标系需要三个要素:坐标原点、坐标轴度量单位、坐标轴方向。VB坐标系统的缺省坐标原点(0,0)在对象的左上角,X坐标向右正方向,Y坐标向下为正方向。 窗体对象坐标系是由它的ScaleTop, ScaleLeft, ScaleWidth, ScaleHeight属性决定的,Scale是“标尺”的含义。窗体的另外四个属性,即Top, Left, Width, Height表示了窗体的大小及屏幕标准坐标系上的位置。
X轴 (ScaleTop, ScaleLeft) 缺省值 (0, 0) ScaleHeight ScaleWidth Y轴 窗体的缺省坐标系统
(0, 0) X轴 (Left ,Top) 屏 幕 坐 标 系 Height Width Y轴 窗体在屏幕上的位置
2. 控件在窗体上的坐标 窗体是控件的容器,控件在窗体上的坐标是用其Top和Left属性定义的。Width,Height属性表示宽度和高度,它决定了控件的大小。
X轴 Y 轴 3. 其它控件容器的坐标系 除窗体外,图片框(PictureBox)等控件也可以作为其它控件的容器使用,也具有坐标系定义。 图片框的主要 作用一是对控 件进行分组, 二是增加界面 的立体感。
4. 坐标系的度量 VB的坐标单位由对象的ScaleMode属性确定,缺省为Twip(缇)。用来保证应用程序对屏幕元素的定位和比例在所有显示器是均保持一致。
5. Scaletop, Scaleleft等与Top,Left的区别 (1)窗体的Top,Left,Width和Height属性的单位永远是Twip,而ScaleTop,ScaleLeft等属性可以通过ScaleMode属性任意改变单位。 (2)窗体的Top,Left,Width和Height属性是相对屏幕坐标而言的,而ScaleTop,ScaleLeft,ScaleWidth,ScaleHeight则定义了窗体自己的坐标系统,窗体上的所有控件将以此为坐标基础。 (3) ScaleWidth,ScaleHeight是指对象的内部尺寸,不包括边框厚度以及菜单或标题等高度。而窗体的尺寸则由Width和Height属性决定。
6. 当前坐标 当在窗体等容器绘制图形或输出结果时,经常要将它们定位在某一希望的位置,这时就必须获得某一点的坐标,即当前坐标。VB 使用CurrentX和CurrentY属性设置返回当前坐标的水平坐标和垂直坐标。 例如,在点(13,2)处打印“X”,可使用以下语句: CurrentX=13:CurrentY=2:Print:”X”
7. 自定义坐标系统 (1)方法1:使用ScaleLeft,ScaleTop,ScaleWidth和Scaleheight属性设置坐标系统 ScaleLeft和ScaleTop是指容器左上角坐标,其缺省值为0。ScaleWidth和ScaleHeight属性用于设置窗体或图片框等容器的净宽度和净高度,即右下角的坐标为(ScalrLeft+ScaltWidth,ScaleTop+ScaleHeught)。 当我们改变ScaleLeft,ScaleTop的值后,坐标系的X轴或Y轴将按此值平移后形成新的坐标原点,因此也就形成了新的自定义坐标系统。例如 Form1.Scale(-14,14)-(14,-14) 将坐标原点设置在窗体中心,左上角的坐标为(-14,14),右下角的坐标为(14,-14),X轴的正方向向右,Y轴的正方向向上。
Form1.Scale(-14,14)-(14,-14)可等同于下面的程序: Private Sub Form_Click() Cls Form1.ScaleLeft = -14 Form1.ScaleTop = 14 Form1.ScaleWidth = 28 Form1.ScaleHeight = -28 Line (-14, 0)-(14, 0) '画X轴 Line (0, 14)-(0, -14) '画Y轴 CurrentX = 0: CurrentY = 0: Print 0 '标记坐标原点 CurrentX = 13: CurrentY = 2: Print "X" '标记X轴 CurrentX = 0.5: CurrentY = 13: Print "Y" '标记Y轴 End Sub
(2)方法2:使用Scale方法设置坐标系 我们在指针时时钟程序中使用的就是Scale方法,使用此方法可直接定义对象左上角坐标和右下角坐标。其语法格式如下: [对象名].Scale[(x1,y1) - (x2,y2)] 对象名可以是窗体,图片框等,若省略对象名,则为带有焦点的窗体对象。(x1,y1)为左上角坐标,(x2,y2)为右下角坐标。与ScaleLeft ,ScaleTop,ScaleWidth,ScaleHeight属性的对应关系为: X1=ScaleLeft ,y1=ScaleTop , x2=x1+ScaleWidth,y2=y1+ScaleHeight 当Scale后面不带参数时,使用默认的坐标系统,对象的左上角为坐标原点(0,0)。
采用默认坐标系统画直线程序 Private Sub Command1_Click() Cls Scale Line (0, 0)-(500, 500) End Sub
采用自定义坐标系统画直线程序 Private Sub Command2_Click() Cls Form1.Scale (0, 500)-(500, 0) Line (0, 0)-(500, 500) End Sub
P168 习题 二、填空题 1. 若窗体Form1左上角坐标为(-250,300),右下角坐标为(350,-200),则X轴的正方向向,Y轴的正方向向。 答案:右 上
P168 习题 二、填空题 2. 当scale方法不带参数时,则采用坐标系。 答案:默认的 8. 容器的实际高度和宽度由和 设置。 答案:Width Height
P168 习题 三、问答题 1. 窗体的Height, Width属性和ScaleHeight, ScaleWidth属性有什么区别? 答案: ScaleWidth,ScaleHeight是指对象的内部尺寸,不包括边框厚度以及菜单或标题等高度。而窗体的尺寸则由Width和Height属性决定
6.2.2 使用VB颜色 VB有两个弹色属性:BackColor和ForeColor,分别用于定义背景颜色和文本/图形的颜色。 VB还提供了QBColor和RGB两个颜色函数。其中QBColor能选择16种颜色:
6.3 相关控件介绍 6.3.1.Line和Shape控件 1.Line控件 Line(线条)控件用于在窗体、框架或图片框画直线。主要属性有: (1)x1,x2,y1,y2属性 用于设置一条知直线的两个端点坐标,即(x1,y1)和(x2,y2)。 (2)BorderWidth属性 用来设置直线的粗细,默认值为1。 (3)BorderColor属性 用来设置直线的颜色,默认为黑色。 (4)BorderStyle属性 用来设置直线的线型。
2.Shape控件 Shape(形状)可以用来画矩形、正方形正方形、椭圆、圆、圆角矩形及圆角正方形。主要属性有: (1)Shape属性——用于设定几何图形的类型。
2. BorderWidth属性 ——表示Shape控件边框的宽度,默认值为1。 (3)FillStyle属性——表示形状的填充格式。
(4)FillColor属性 表示形状的填充格式颜色,当FillStyle 属性为1时,该属性无效。 (5)BorderColor属性 用来设置边框的颜色,默认值为黑色。
P167 习题 一、单选题 6. 要绘制多种样式的直线,需要设置Line控件( )属性。 A. Shape B. BorderStyle C. FillStyle D. Style 答案:B
6.3.2 Image和PictureBox控件 Image(图像框)和Picture(图片框)都是用来显示图形文件的控件,它们可以加载 .bmp, .ico, .wmf, .gif 等类型的图形。Picture控件不仅显示图形图片,还可以作为其它控件的容器,支持绘图和输出文字,功能比控件强。
1. Picture属性 Image控件和PictureBox控件都具有Picture属性。要在图像框在显示一幅图像,可以在属性窗口中Picture属性进行设置,也可以使用LoadPicture函数来设置,其格式如下: <对象名>.Picture=LoadPicture(图像文件名) 要清除图片框中的图像,可以在属性窗口中直接删除其Picture属性的内容,也可以在代码中使用LoadPicture函数进行删除,其格式为: <对象名>.Picture=LoadPicture()
2. Image的Stretch属性 Stretch属性用于确定图像框然后与图片相适应,其取值为True和False。当Stretch属性设置为True时,所装入的图像能够自动缩放以适应图像框的大小。为False时,图像框将适应图像的大小。
Stretch属性为True时,图像自动适应图像框的大小。Stretch属性为True时,图像自动适应图像框的大小。