第九章 图形处理及多媒体 9.1 图形处理 9.2 多媒体应用
掌握 重点 绘图方法:Pset,Line,Circle,Cls 窗体的ScaleMode属性 色彩常量,色彩函数 绘图控件:shape和line 绘图方法:Pset,Line,Circle,Cls 图片框,图像控件 鼠标事件:MouseDown,MouseUp,MouseMove 鼠标事件过程参数:Button,Shift,X,Y 重点 绘图方法:Pset,Line,Circle,Cls
9.1 图形处理 VB 的坐标系统 绘图属性 使用绘图控件 绘图方法(点,线和圆) 清除图形 使用图片框 Visual Basic的鼠标事件
9.1 图形处理 Visual Basic下的图象处理技术,包括绘图,色彩,动画,三维空间,虚拟现实,甚至计算机仿真的基础。听起来很诱人的东西往往需要大量不诱人的知识,本章是这些奇妙东西的入门。 VB可以利用绘图方法在窗体或某容器类对象上画图。也可以用绘图控件画图。 其多媒体控件可以让你感受动画、声音等。
VB 的坐标系统 (1) VB坐标系 系统坐标系(屏幕坐标) 容器坐标系统(“窗体坐标”) 窗体中调整、移动控件时,使用容器的坐标系统。 位置用Left,Top属性描述。 Left表示控件左上角到窗体左边的距离 Top表示控件左上角到窗体上边的距离。
VB 的坐标系统 (2)改变默认坐标系(利用窗体的Scale系列属性) ScaleTop属性:确定对象顶端的垂直坐标; ScaleLeft属性:确定对象左边的水平坐标; ScaleTop属性:确定对象顶端的垂直坐标; ScaleWidth属性:确定对象内部水平的单元数目; ScaleHeight属性:确定对象内部垂直的单元数目。 如:ScaleLeft = -50 : ScaleTop = 50 ScaleWidth = 100 : ScaleHeight = -100 利用窗体的Scale方法 如:Form1.Scale (-50, 50) - (50, -50) 其中:前括号指左上角坐标,后括号指右下角坐标
VB 的坐标系统 (3) 刻度系统 刻度系统由控件的ScaleMode属性设置的。ScaleMode的值有: ScaleMode值 意义 0 用户自定义 1 点素(Twip 即“特维”,缺省刻度) 2 点(Point) 3 象素(Pixel,这与屏幕分辨率有关) 4 字符(Character) 5 英寸(Inch) 6 毫米(Millimeter) 7 厘米(Centimeter)
绘图属性 (1) 当前坐标 (2) 线宽 • 对象:窗体、图形框等。 • 属性:CurrentX、CurrentY,该属性设计阶段不可用 • 绝对坐标 :(x,y) • 相对坐标:step ( x, y) (2) 线宽 • 窗体、图形框或打印机的DrawWidth属性给出这些对象上所画线的宽度或点的大小。 DrawWidth属性以像素为单位来度量,最小值为1。
绘图属性 (3) 线型(DrawStyle) (4) 填充 DrawStyle设置值 线型 0 实线 1 长划线 2 点线 3 点划线 0 实线 1 长划线 2 点线 3 点划线 4 点点划线 5 透明线 6 内实线 (4) 填充 封闭图形的填充方式由以下两个属性决定: FillColor指定填充图案的颜色,缺省值与ForeColor相同 FillStyle属性指定填充的图案,共有8种内部图案。
绘图属性 (5) 色彩 VB采用对象前景色(ForeColor)来绘图 • RGB函数 • QBColor函数 格式:RGB(红,绿,蓝) (5) 色彩 VB采用对象前景色(ForeColor)来绘图 • RGB函数 格式:RGB(红,绿,蓝) 其中: 红、绿、蓝三基色的成分使用0~255之间的整数,共有 256×256×256种颜色 • QBColor函数 格式:QBColor(颜色码) 其中: 颜色码使用0~15之间的整数,共有16色 例:Label1.forecolor=RGB(255,0,0) Label1.forecolor=vbred
绘图控件 (1)Shape控件: Shape控件可以用来画矩形、正方形、椭圆、圆、圆角矩形及圆角正方形,通过Shape属性可确定所需要的几何形状。(默认为矩形)
绘图控件 Shape控件的属性
Shape控件举例 例9-1:图形变换程序 Private Sub Form_Load( ) ‘ 初始化,确定图形的颜色及初始形状 Dim r As Integer, g As Integer, b As Integer Randomize r = Int(Rnd * 256) ‘红色 g = Int(Rnd * 256) ’绿色 b = Int(Rnd * 256) ‘兰色 Shape1.FillStyle = 0 ’填充样式设置为实心 Shape1.FillColor = RGB(r, g, b) ’填充色 r = Int(Rnd * 256) g = Int(Rnd * 256) b = Int(Rnd * 256) Shape1.BorderColor = RGB(r, g, b) ‘边框颜色 Shape1.Shape = 0 ‘设置图形的样式 End Sub Private Sub form_click() Static i As Integer i = i + 1 If i <= 5 Then Shape1.Shape = i Else i = 0 End If End Sub
绘图控件 (2) Line控件:绘制直线 属性见下表:
Line控件举例 例9-2:转动的指针程序 Private Sub Form_Load() Line1.BorderColor = RGB(255, 0, 0) Line1.BorderWidth = 2 Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer() Static a As Integer Dim x As Single, y As Single Const pi = 3.14159265 a = a Mod 360 x = 1000 * Sin(a * pi / 180) y = (-1) * 1000 * Cos(a * pi / 180) Line1.X2 = x + 2160 Line1.Y2 = y + 1440 Line1.Refresh a = a + 6 End Sub
绘图方法 (1) Pset方法:用于画点 格式:[object.]Pset[Step](x,y)[,颜色] 其中:objec 是用于绘图板的“容器”对象名,如在本窗体画点,可以省去,(x,y)为点的坐标;Step表示采用采用相对坐标; 注:采用背景颜色可清除某个位置上的点。 举例:PSet (1000, 1000), vbRed Picture1.PSet (1000, 2000), vbBlue PSet (1000, 1000) PSet (1000, 1000), BackColor
绘图方法 (2) Line方法:用于画直线或矩形 语法: [object.]Line [[Step](x1,y1)] - [Step](x2,y2) [,Color] 说明:Color:指定画线颜色 Step:用来指出要画出的点与前一点的相对位置 语法: [object.]Line [[Step](x1,y1)] - [Step](x2,y2) [,Color] ,B[F] 说明:B:利用给定坐标画矩形.(使用时其前两个逗号不可省)。 F:规定矩形的填充颜色(在使用B参数的前提下使用)。 示例:绘制一个任意三角形 说明: Form1. CurrentX = 2000 Form1. CurrentY = 2000
Line方法绘制三角形 Private Sub Command1_Click() Line (1500, 500)-(2500,750) End Sub
绘图方法 (3) Circle方法:用于画圆、椭圆、圆弧和扇形 [对象.] Circle [Step](x,y),半径[,Color] [start],[end],[,aspect] 参数:start:指定弧的起点位置 默认值为0. end: 指定弧的终点位置,默认值为2π. Aspect: 大于1时,椭圆沿垂直方向拉长;当小于1时,椭圆沿水平方向拉长。默认值为1,将产生一个标准圆. 扇形:start和end均取负值
Circle方法举例 Private Sub Command1_Click() form1.Circle (1200, 1000), 750, vbRed Circle Step(0,0), 850, RGB(200, 0,255) End Sub
绘图方法 小结:设定坐标,利用绘图控件(方法)画画。 清除图形: [object.]cls 在图形中加入文本: 例:currentX=1908 currentY=1908 Print ”输出位置“ 比较记忆:点、线和圆的语法 点: [对象.]Pset[Step](x,y)[,颜色] 线: [对象.]Line [[Step](x1,y1)] - [Step](x2,y2) [,Color] 圆: [对象.] Circle [Step](x,y),半径[,Color] 小结:设定坐标,利用绘图控件(方法)画画。
图片框 1、使用picture属性显示图片 2、使用loadpicture加载图片(运行时) loadpicture([fname],[size],[coloredpth],[x,y]) 3、使用paintpicture方法 [object.]paintpicture picture,dx,dy[,dw[,dh[,sx[,
鼠标事件 VB系统除了能捕获Click和Dbl Click以外,还可以捕获鼠标按钮的按下、释放和移动。即引发鼠标的MouseDown,MouseUp,MouseMove等事件。
鼠标事件 ⑴ 鼠标事件及触发条件 MouseDown事件:按下任意鼠标按键时触发 MouseUp事件:释放任意鼠标按键时触发 MouseMove事件:鼠标移动过程中时触发 ⑵鼠标事件使用的参数 MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 判断在按键的同时,是否按下了Shift、Alt或Ctrl键 鼠标指针的位置 指示哪个鼠标键触发了鼠标事件
鼠标事件 示例:检测用户按下了鼠标的哪个键? Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then Print “你按下鼠标右键" If Button = vbLeftButton Then Print “你按下鼠标左键” End Sub
多媒体应用 1. 使用动画控件(Animation) VB中与多媒体有关的控件有两个,都是ActiveX控件。一个是动画控件,另一个是媒体控制控件。 1. 使用动画控件(Animation) (1) 功能 用于播放无声的“.avi”的数字电影文件。 (2) 添加部件 部件——Microsoft Windows Common Controls-2 6.0 (3) 常用属性 Center:设为True,可确保播放的画面位于动画控件的中间位置。 Autoplay:用于设定已打开的动画文件的自动播放。
多媒体应用 (4) 常用方法 表示:使用名为animat1的动画控件要把已打开的“.avi”文 Stop-----停止播放 Open---打开播放文件 格式:Object.Open fname Play----用于进行播放 格式:Object.Play [repeat][,start][,end] 其中:repeat:重复播放的次数 start:起始播放的桢; end:停止播放的桢 例如:animat1.play 5,9,24 表示:使用名为animat1的动画控件要把已打开的“.avi”文 件的第 10幅画到第25幅画面重复播放5遍。 Stop-----停止播放 一般形式:Object.stop Close-----关闭文件
多媒体应用 2. 多媒体控件 (1)多媒体控件(Multimedia MCI) 用于管理,控制各种MCI (Media Contol Interface )设备的控件。它提供了一组控制按钮,可以通过这些按钮控制和管理声卡 、 CD-ROM、VCD播放器等设备。 (2)添加部件 第一步:工程/部件 第二步:部件 第三步:在“控件”列表框中选定 Microsoft Multimedia Control 6.0
多媒体应用 (3) 主要属性: (4) MCI命令 Visible:使该控件可见 DeviceType:设置多媒体控件所要管理的设备类型 (3) 主要属性: Enabled:使该控件有效 Visible:使该控件可见 DeviceType:设置多媒体控件所要管理的设备类型 AutoEnable:为True时,自动激活DeviceType所指定的设备。 FileName:指定MCI所要使用的文件名称 Command:在运行时使用,指定需要执行的MCI命令 (4) MCI命令 它是通过一套高层的与设备无关的命令来控制多媒体设备的。 主要命令如表9-7所示(p223)。 格式:Mmcontrol1.Command=“commandname” 例如: Mmcontrol1.Command=“Open”