1、窗体的事件

Download Report

Transcript 1、窗体的事件

第八章
图形操作与多媒体
教学内容:
8.1 图形控件与操作
8.2 多媒体控件与操作
项目十 图形化时钟项目
一、项目功能
利用图像控件,画一个简单而实用的时钟
二、知识、能力和素质目标
知识目标
能力目标
VB中坐标系的概念
理解VB中坐标系的概念
Line控件的使用
计时器控件的使用
掌握Line控件的使用
熟悉计时器控件的使用
三、任务划分
任务一
设计项目的界面
任务二
设置控件属性
任务三
编写事件代码
任务一 设计项目的界面
本项目用到1个line、1个计时器,其大小、位置如下图
所示:
任务二 设置控件属性
设置窗体、计时器的属性:
1、计时器的interval设置为:0,Enable设置为:
true。
2、line控件主要用其方法实现画线条。
3、其它略。
任务三 编写代码
分别编写窗体、计时器代码:
1、窗体的事件:Load, Resize
(1)窗体的Load事件代码:
Private Sub Form_Load()
Timer1.Interval = 100
Width = 4000
Height = 4000
Left = Screen.Width \ 2 - 2000
Top = (Screen.Height - Height) \ 2
End Sub
(2)窗体的Resize事件代码:
Private Sub Form_Resize()
Dim i, Angle
Static flag As Boolean
If flag = False Then
flag = True
For i = 0 To 14 '画出表盘12个点和时、分、秒共15个LINE
If i > 0 Then Load Line1(i)
Line1(i).Visible = True
Line1(i).BorderWidth = 5
Line1(i).BorderColor = RGB(0, 128, 0) '设置LINE的粗细和颜色
Next i
End If
For i = 0 To 14
Scale (-1, 1)-(1, -1)
Angle = i * 2 * Atn(1) / 3
Line1(i).X1 = 0.9 * Cos(Angle)
Line1(i).Y1 = 0.9 * Sin(Angle)
Line1(i).X2 = Cos(Angle)
Line1(i).Y2 = Sin(Angle)
Next i
End Sub
2、计时器的事件:Timer
Private Sub timer1_Timer()
Const HH = 0, MH = 13, SH = 14
Dim Angle
Static LS
If Second(Now) = LS Then Exit Sub
LS = Second(Now)
Angle = 0.5236 * (15 - (Hour(Now) + Minute(Now) / 60)) '设置时针
Line1(HH).X1 = 0
Line1(HH).Y1 = 0
Line1(HH).X2 = 0.3 * Cos(Angle)
Line1(HH).Y2 = 0.3 * Sin(Angle)
Angle = 0.1047 * (75 - (Minute(Now) + Second(Now) / 60)) '设置分针
Line1(MH).X1 = 0
Line1(MH).Y1 = 0
Line1(MH).X2 = 0.7 * Cos(Angle)
Line1(MH).Y2 = 0.7 * Sin(Angle)
Angle = 0.5236 * (75 - Second(Now)) '设置秒针
Line1(SH).X1 = 0
Line1(SH).Y1 = 0
Line1(SH).X2 = 0.8 * Cos(Angle)
Line1(SH).Y2 = 0.8 * Sin(Angle)
Form1.Caption = Str(Now()) '窗口显示精确的日期和数字化的时间
End Sub
项目十一 MP3播放器项目
一、项目功能
通过对窗体事件的响应,制作简单的打字游戏。
要求随机产生ASCII码为33到126之间的字符,
其中包括数字、大小写英文字母和其他字符。
二、知识、能力和素质目标
知识目标
能力目标
多媒体控件的常用属性和事件
掌握多媒体控件的常用属性和事件
文件操作方法
通用对话框的使用
掌握文件操作方法
掌握通用对话框的使用
三、任务划分
任务一
设计项目的界面
任务二
设置控件属性
任务三
编写事件代码
任务一 设计项目的界面
本项目用到3个标签、1个图片框、5个按钮和1个通用对
话框,其大小、位置如下图所示
任务二 设置控件属性
设置窗体和按钮、标签的属性:
1、label1用于提示播放的时间,其Caption为:“ 播放时
间:”。
2、 label2用于显示播放的时间,其Caption为:“”。
3、 label3用于显示播放的曲目。
4、图片框的name属性为:Mp3Play1
4、其它控件的属性(略)
任务三 编写代码
分别编写按钮和图片框的代码:
1、图片框的事件: ActFrame
Private Sub Mp3Play1_ActFrame(ByVal ActFrame As Long)
Label2.Caption = (ActFrame * Mp3Play1.MsPerFrame) \ 1000
End Sub
2、按钮的事件:Click
Private Sub cmdPlay_Click()
Mp3Play1.Play
End Sub
Private Sub cmdPause_Click()
Mp3Play1.Pause
End Sub
Private Sub cmdClose_Click()
Mp3Play1.Close
End Sub
Private Sub cmdOpen_Click()
CommonDialog1.ShowOpen
r = Mp3Play1.Open(CommonDialog1.FileName, "")
Label3.Caption = "正在播放歌曲:" &
CommonDialog1.FileName
End Sub
Private Sub cmdStop_Click()
Mp3Play1.Stop
End Sub
四、相关知识点
8.1 图形控件与操作
8.1.1 图片框控件和图像框控件
(1)图片框控件
图片框(Picture)控件是一个完整的图形控件。不仅可用于显
示多种格式的图片,也能支持VB中的各种绘图方法和Print方法,
而且还能作为一个容器用于放置其他控件。
支持的图形文件格式有:位图文件(.bmp、.dib、 .cur)、图标文
件( .ico)、图元文件(.wmf)、增强型图元文件(.emf)、JPEG
图形(.emf)或GIF图形(.gif)等。
JPEG(Joint Photographic Expert Group)是静止图形压缩算法的国
际标准,采用有损压缩技术,压缩比可选择,支持灰度和真彩色图
像。
GIF(Graphic Interchange Format) ,采用无损压缩技术。其特点是:
只要用一半的显示时间即可大致看出图片的全貌,但最多支持256
种颜色。
常用属性:
Picture属性
与窗体的Picture属性大致相同,用于指定图片框中要加载的图片。
默认的属性值为NoThing(未加载图形文件)。设计时可以修改其属性
值,还可用剪贴板将图片复制粘贴到图片框中。
在程序中也可以修改或删除图片框中的图片。
例如:
Picture1.Picture=NoThing
‘删除图片框中的图片
Picture1.Picture=“”
‘删除图片框中的图片
Picture1.Picture= Picture2.Picture
‘修改图片框中的图片
用LoadPicture函数加载一新图片或删除图片框中的图片
例如:‘在图片框中加载新图片
Picture1.Picture = LoadPicture(“c:\PHONE.gif”)
‘不带参数时表示删除图片框中的图片
Picture1.Picture = LoadPicture()
Picture属性
用SavePicture函数将加载到图片框中的图片及用绘图方法绘制的图形
保存到一指定的文件中
例如:
SavePicture Picture1.Picture,"D:\Temp\Tmp.Bmp"
AutoSize属性
用于选择是否自动调整图片框控件的大小以适应所加载的图片。
默认的属性值为False(即图片框保持原始尺寸)。如果图片比图片框
大,那么超出的部分不能显示出来,由于图片框不支持滚动条,未显
示的部分用户将无法看到。利用滚动条控件的编程技术可以解决这一
问题,在后面的编程实例中将看到这一点。
注意:若加载的是图元文件(.wmf),那么图形会自动调整大小来适
应图片框的大小,若加载的是其他类型的文件,那么图形不会调整大
小。
Align属性
用于选择图片框的对齐方式,可以使图片框依附在窗体上下左
右任一边上,就像工具栏一样。还可使图片框的大小随窗体的大小
的改变而改变。
默认值为0-None(自定义大小及位置)。可供选择的值还有:
1-Align Top(显示在窗体顶部)
2-Align Bottom(显示在窗体底部)
3-Align Left(显示在窗体左边缘)
4-Align Right(显示在窗全右边缘)
显示在窗体的顶部或底部时,图片框的宽度为窗体的ScaleWidth属
性值,高度可自定义;显示在窗体的左、右边缘时,图片框的高度
等于窗体的ScaleWidth属性值,宽度可自定义。
(2)图像框控件
图像框(Image)控件是一个简化的图形控件。与图片框控件一
样,可用于显示多种格式的图形文件,但不支持VB中的各种绘图方
法和Print方法,也不能作为一个容器来放置其他控件。
加载图片时,与图片框不同的是, 默认时系统能自动调整图像框或
图片的大小,使它们的大小总能保持一致。
常用属性:
Picture属性
与图片框控件的Picture属性一样,用于指定图像框中要加载的图片。
加载、删除或修改图片的方法也与图片框中所用的方法相同。
Strecth属性
用于选择是否将加载的图片缩放到控件本身的大小。
默认值为False(加载图片后,图片不缩放)。这时系统将自动调整
控件的大小,以适应所显示的图片。
若将Strech属性值改为true(加载图片后,缩放图片)。这时控件的大小
不变。
Appearance属性、BorderStyle属性
用于选择控件的立体与边框外观。
Appearance属性的默认值为0(平面外观),若改为1则为立体外观。
BorderStyle属性的默认值为0(无边框),若改为1 则为单线固定边
框。
可利用Image控件来代表一个按钮,用其外观代表按钮的状态。
在Image控件的MouseDown事件中通过修改属性,将外观设置为“立
体单线”表示按钮按下;在MouseUp事件中将外观设置为“平面单线”
表示按抬起。
例题1
返回目录
例8.1
返回目录
利用滚动条控件控制图片框中的超大图片的显示。
由于图片框控件Picture和图像框控件Image都没有滚动条属性,不支
持滚动条。因此,要用滚动条来控件图片的显示,就要自己编程实现。
(1)界面设计与属性设置
在窗 体 上 放 置 Picture1控 件、
HScroll1控件、VScroll1控件,
并 在 Picture1 控 件 中 放 置
Image1控件,通过Image1控件
的属性窗口中的Picture属性加
载一张超大图片。
图形演示1
8.1.2坐标系统与颜色
(1)坐标系统
为了确定控件、图形或文字在容器(窗体或图片框)中的位置或
大小,必须了解容器的坐标系统。任何容器都有一个默认的坐标系
统,如图所示:以容器的左上角为原点(0,0),X轴方向向右为正,
Y轴方向向下为正,坐标单位(刻度)为缇(Twip)。容器的坐标系
统的原点、方向和坐标单位可以通过修改刻度属性或使用Scale方法
来改变,但一般使用默认的坐标系统。
对象的内部高度
ScaleMode属性
可通过设置容器的ScaleMode属性值来修改容器中的刻度。
例如:
frmDisplay.ScaleMode=6
‘将窗体的刻度设置为毫米
picDisplay.ScaleMode=VbPixels
‘将图片框的刻度设置为像素
重新设置ScaleMode属性后,ScaleWidth和ScaleHeight属性值将自动重
新定义,使之与新的刻度保持一致,而ScaleTop和ScaleLeft属性将自动
设为0。
返回目录
ScaleLeft和ScaleTop属性
用于定义容器的左上角的坐标。
例如:
ScaleLeft=200
ScaleTop=200
(200,200)
‘将当前窗体的左上角坐标定义为
ScaleWidth和ScaleHeight属性
对象的内部宽度和高度
CurrentX和CurrentY属性
用于设置或返回容器当前的坐标值。
返回目录
例如:
Private Sub Picture1_MouseDown(Button As Integer,
Shift As Integer, X As Single, Y As Single)
Picture1.CurrentX = X
Picture1.CurrentY = Y
Picture1.Print Str(Int(Picture1.CurrentX)) & "," &
Str(Int(Picture1.CurrentY))
End Sub
当用户在Picture1中按下鼠标时,将鼠标按下的位置设为当前位置,
并在当前位置输出当前坐标。
Scale方法
用于改变坐标系。Scale方法的语法为:
[对象名 . ] Scale [ (x1 , y1) - (x2 , y2) ]
将容器的左上角坐标设为(x1 , y1),右下角坐标设为(x2 , y2)。即
容 器 的 ScaleTop=x1 , ScaleLeft=x2 , ScaleWidth=x2-x1 ,
ScaleHeigth=y2-y1。
若使用Scale方法时不带参数,表示将容器的坐标系恢复为默认的
坐标系。
(2)设置颜色
返回目录
1、 RGB函数
可用于设置任何颜色。RGB函数的语法为:
RGB( red , green , blue )
参数red,green,blue分别表示红,绿,蓝的分量值。三个分量的取值
范围都是在0到255之间。
例如:
Picture1.BackColor = RGB(0, 0, 255)
‘将Picture1的背景色设为蓝
色
2、QBColor函数
返回目录
只能用于设置16种颜色中的一种。
QBColor函数的语法为:
QBColor( color )
参数color的取值范围是0到15,分别与一种颜色相对应。
例如:
Pset(CurrentX , CurrentY),QBColor(2)
‘在当前位置画一绿色的
点
3、使用内部颜色常量
VB将常用的颜色值定义成内部常量。
例如:Form1.ForeColor= vbRed
Form1.ForeColor=&HFF&
‘将Form1的前景色设为红色
十 六进制数
例8.2 利用滚动条控件和RGB( red , green , blue )函数控制图片框的
背景色。
图片框的背景色用RGB函数控制,而RGB函数的三个参数用滚动条
的Value属性值控制,由于三个参数的取值范围为0-255,所以应将
滚动条的Max属性值改为255,Min属性取默认值为0。为了能在拖运
滚动条的滚动框时能够动态地改变颜色,在滚动条的Scroll事件中调
用Change事件。
8.1.3线条与形状控件
返回目录
在容器中绘制一些简单的图形时,可以使用线条控件(Line)和形状控
件(Shape)。与其它控件不同的是这两个控件没有任何可以触发的事件,
只能用于美化界面。
(1)线条控件
线条控件(Line)只可以用来画直线段。线段的位置、长短、颜色、宽
度等,可以用属性来设置。
常用属性
X1,Y1,X2,Y2属性
X1,Y1和X2,Y2为直线段的两个端点的在容器中的坐标值,用来设
定线段的位置及长短。
BorderWidth属性
用来设定直线的宽度。
BorderColor属性
用来设定直线的颜色。
BorderStyle属性
用来设定直线的样式。
返回目录
(2) 形状控件
形状控件(Shape)可用来画矩形、圆形、椭圆、正方形等图形,
所画的图形可以用不同的颜色及方式来填充。
常用属性
Shape属性
用来设定图形的形状样式。
FillStyle属性
用来设定图形内部的填充样式。
返回目录
FillColor属性
用来设定图形内部填充的颜色。
BackColor属性和BackStyle属性
BackStyle属性用来设定形状控件是否透明。
BackStyle属性取值可有两种设置:
0――透明(默认值) 除边框外,不会遮盖其它控件
1――不透明
形状控件内部除了由FillStyle所指定的部分是由
FillColor指定的颜色外,其他部分是由BackColor指定的颜色。
Top,Left,Height,Width属性
Top,Left用来设定图形的左上角的坐标,Height,Width用来设定图
形的高度和宽度。
BorderColor属性和BorderColor属性
用来设定图形的边框宽度和颜色。
例8.3
利用形状控件和定时器控件制作简单的动画。
界面设计如图8.5所示。
在窗体添加一图片框控件Picture1,在Picture1中添加两个形状控
件Shape1和Shape2。Shape1为矩形作车头,设置好属性后复制
一个矩形作车身。Shape2为圆形作车轮,设置好属性后复制出另
一 车 轮 。 在 窗 体 中 添 加 一 时 钟 控 件 Timer1 及 两 个 命 令 按 钮
Commend1和Commend2。
8.1.4 Pset、Line和Circle方法
使用线条和形状控件可以绘制简单的图形,但使用VB提供的
绘图方法可以绘制更加复杂的图形。支持绘图方法的对象为窗体
或图片框。常用的绘图方法有:
(1)画点(Pset)
Pset方法可用于在指定的位置(x,y),用指定的颜色画点。语法格式
为:
[object .] Pset [Step] (x,y) [ , color]
[]表示可选项,若省略所有可选项,即Pset (x,y)表示在当前窗体
的坐标位置为(x,y)处,以前景色画点。
Step表示(x,y)为与当前坐标的的相对位移。例如:
CurrentX=100
CurrentY=100
‘将当前窗体的当前坐标置为100,100
Pset Step (50,100)
‘在当前窗体的坐标位置为150,200处画点
Picture1.Pset (200,200) , vbRed
‘在Picture1中画一红色的点。
这时(200,200)表示Picture1中的坐标位置。
颜色除了可用内部颜色常量外,也可用颜色函数RGB或QBColor。
(2)画线或矩形(Line)
Line方法可用于画直线或矩形。语法格式为:
[object .] Line [[Step] (x1,y1)] – [Step] (x2,y2) , [color] , [B][F]
参数(x1,y1)为起点坐标,若省略表示以当前坐标为起点。
参数(x2,y2)为终点坐标。
选项B表示画矩形,若省略为画直线。
选项F只有有选项B时才可选,表示用前景色或Line方法中指定的颜色
填充矩形。若只有B,不选F,矩形的填充色由绘图区的FillColor属性
值和FillStyle属性值决定。
例如:
Line (0,0)-(ScaleWidth,ScaleHeight)
‘在从坐标(0,0)处到当前窗体的右下角画一直线
Picture1.Line -(200,200) , ,B
‘在Picture1中以当前坐标位置为起点,以坐标位置(200,200)
为终点,以前景色画一矩形。
Line (100,100)-(1000,1000) , RGB(0,255,0) , BF
‘以绿色画一矩形并用绿色填充。
(3)画圆、椭圆、扇形和弧线(Circle)
Circle方法可用于画圆、椭圆、扇形和弧线等。
1.画圆
语法格式为:
[object.] circle [Step] (x,y) , radius [ , color]
参数(x,y)为圆心的坐标。
radius为圆的半径。
color为画圆时的画线颜色,若省略,则表示用前景色画圆。圆的填
充色由绘图区的FillColor属性值和FillStyle属性值决定。
例如:
circle (100 , 100) , 50 , vbRed
‘在坐标100,100处用红色画半径为50的圆
2.画圆弧或扇形
语法格式为:
[object.] circle [Step] (x,y) , radius [ , color] , start , end
参数start和end 为圆弧的起点和终点,以弧度为单位,取值范围0到2Л。
若取值为负数,表示画扇形。若取值超过2Л或-2Л,程序将会出错。
弧度的计算是以圆形的最右边为0,以逆时针方向为正。
例如:当窗体大小改变时,在窗体内画圆弧。如图8.6所示。
3.画椭圆
语法格式为:
[object.] circle [Step] (x,y) , radius [ , color] , [start] , [ end] , aspect
参数aspect为圆的纵横比(垂直半径/水平半径)。若大于1,参数
radius为垂直半径,相当于标准的圆被水平压缩;若小于1,参数
radius为水平半径,相当于标准的圆被垂直压缩。
(4)与绘图有关的方法
Cls清除画面
语法格式为:
[object .] Cls
用于清除指定对象上用绘图方法所绘制的图形。注意:用Cls
方法不能清除用线条控件Line和形状控件Shape所绘制的图形。
Print文字输出
语法格式为: [object .] Print [experssion] [,|;]
用于在当前位置(CurrenX,CurrentY)输出文字。
Point取得颜色数据
语法格式为:
[object .] Point(x,y)
用于取得指定坐标位置(x,y)处一点的颜色数据。
(5)与绘图方法有关的属性
DrawStyle属性与DrawWidth属性
用于设定使用绘图方法时所用的划线的样式及线宽。
FillStyle属性与FillColor属性
用于设定使用绘图方法所绘制的封闭区间的填充样式与填充颜色。
AutoRedraw属性
用于设定由绘图方法所产生的图形是否能自动重绘,默认值为
False,即当所绘的图形被遮盖后再重新显露出来时,被遮盖的部
分不能自动重绘。
当AutoRedraw属性值为False时,用绘图方法所产生的图形只是输
出到屏幕上的工作区中,并不记入内存,当窗体被遮盖后再重新显
露出来时,被遮盖的这部分图形不会重新显示出来。
当AutoRedrass属性值为True时,用绘图方法产生的图形不仅输出
到屏幕的工作区中,而且被记入内存,所以当窗体被遮盖后再重新
显露出来时,被遮盖的这部分图形可以重新显示出来。
例题AutoRedraw
例8.4
利用绘图方法绘制简单的图形。
界面设计及属性设置如图所示。
8.2 多媒体控件与操作
8.2.1 VB的多媒体控件介绍
要使用VB的多媒体控件,要先动手添加到工具箱中。在“工程”
菜单中单击“部件”,或在工具箱上单击右键再单击“部件”,
选择Microsoft Multimedia Control 6.0,单击“确定”按钮。见图
多媒体控件就添加到工具箱中了,通常称之为Multimedia MCI控
件。
MCI是Media Control Interface(媒体控件接口)的缩写,
它为多种多媒体设备提供了一个公用接口。实际上,VB多媒体控
件控件就是一组按钮,它用来向多媒体设备发出MCI命令。
当把多媒体控件添加到窗体上后,工具的外观如图8.14所示,
它实际上是由一系列按钮组成,外观和按钮的功能与我们平常使用
的录音机相似。
它们被分别定义为Previous(最前)、Next(最末)、Play(播放)、
Pause(暂停)、Back(上一曲)、Step(下一曲)、Stop (停止)、
Record(录音)和Eject(弹出)。
8.2.2 多媒体控件的常用事件及属性
多媒体控件常用的事件有:
ButtomClick事件、
ButtonCompleted事件、当多媒体MCI控制按钮激活的MCI命令完成
后发送。
ButomGotFocus 事 件 、 ButtonLostFocus 事 件 、 Done 事 件 和
StatusUpdate事件,Button可以是以下任意一种:Previous 、Next、
Play、Pause 、Back、Step、Stop、Record或Eject。
多媒体控件的常用属性包括:
ButtonEabled属性
该属性设定控件上各个按钮的状态是否有效,当属性值为Ture时,
按钮处在可用状态。当属性值为False时,按钮呈现为灰色、不可使
用。可以在属性栏中设置,初始的属性值都为False,也可以用程序
设置,如今有以下程序:
Button Visible属性
该属性设置控件上的各按钮是否出厂可见状态。当属性值为Flase
时,按钮不可见,当属性为True时,按钮是可见的。
FileName属性
指定将要打开的或者将要保存的文件名。
Frames属性
规定每次单击Step或Back按钮时,能够向前或后退的帧(画面)数。
在设计时,该属性不可用。它是一个长整型数。
Lengty属性
该属性返回一个已打开的MCI设备上的媒体长度,在设计时,该属性
不可用,这是一个长整型数。
Mode属性
返回打开的MCI设备的当前状态,在设计时该属性一可用,其值对应
说明见表8.8。
例8.5
利用多媒体控件制作一个媒体播放机。
采用多媒体控件编制媒体播放机用来播放AVI、WAV 媒体文件,
非常简单,只要写出很少的几条命令。
操作步骤为:
新建一个工程在窗体上添加一个1个Mmcontrol控件,1个通用
对话框控件,2个命令按钮,2个单选按钮。
为各个对象编写如下代码,运行结果如图。
本章小结
本章首先介绍了VB常用的图形控件、多媒体控件相关操作其
操作。包括:
(1)图片文件的图片框控件Picture和图像框控件。VB通过图
片框和图像框控件来加载和调整图片。
(2)VB的坐标系统及颜色设置方法。坐标系统包括了系统默认
的坐标系统和用户自定义的坐标系统。
(3)VB的图形控件:线条控件Line和形状控件Shape及两者的
使用方法
(4)在VB中使用Pset方法、Line方法和Circle方法绘图
(5)介绍VB中多媒体控件Multimedia MCI及常用事件与属性