图形图象多媒体.docx
- 文档编号:27731055
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:19
- 大小:165.76KB
图形图象多媒体.docx
《图形图象多媒体.docx》由会员分享,可在线阅读,更多相关《图形图象多媒体.docx(19页珍藏版)》请在冰豆网上搜索。
图形图象多媒体
图形图象多媒体
一、坐标系统
在VB中,每个对象定位于存放它的容器内,对象定位都要使用容器的坐标系,对象的left、top属性指示了该对象在容器内的位置。
例如,窗体处于屏幕内,屏幕是窗体的容器;在窗体内绘制控件,窗体就是控件的容器;如果在图片框内绘制图形,该图片框就是图形的容器。
对象只能在容器界定的范围内变动。
当移动容器时,容器内的对象也随着一起移动,而且与容器的相对位置保持不变。
构成一个坐标系,需要三个要素:
坐标原点、坐标度量单位、坐标轴的方向。
1、窗体的缺省坐标
当把窗体作容器,在窗体上安放控件的时候,控件的位置是相对于窗体的,因此,控件在窗体上的位置取决于窗体的坐标系。
我们可以看幻灯片上的图例,对于窗体这个容器来讲,往窗体上放控件不会放在窗体的标题栏或者菜单栏上,因此,对于窗体这个容器来讲,它的坐标系是不包含这两个部分的。
我们可以看图:
从图上可以看出,窗体的缺省坐标系和我们以前在数学里面学到的坐标系有些不同。
它的左上角是原点,向右是X轴的正向,向下是Y轴的正向。
所以,右下角是最大坐标。
在窗体坐标系中,用来表示坐标的属性是Scaleleft,scaletop,scalewidth,scaleheight。
分别代表的位置和长度可以从图中很容易看出。
2、屏幕坐标系
窗体是控件的容器,而窗体又是相对于屏幕存在的,所以屏幕是窗体的容器。
那么,我们再来看看窗体在屏幕中的位置是如何定义的。
对于屏幕来讲,他的坐标原点同样也在屏幕的左上角,往右是X轴的正轴,往下是Y轴的正轴
那么,窗体在屏幕中的位置可以如上图一样定义。
这里,我们可以对比刚才窗体的缺省坐标系的一些属性进行分析一下。
窗体的width属性和窗体的scalewidth属性的值通常是相等的。
但是,窗体的height属性和窗体的scaleheight属性是不同的,height属性的值包括了窗体的标题栏和菜单栏,是窗体的外围的高度。
从这里我们能够看出来,对象相对于它所属的容器的位置和大小的定义是用left,top,width,height这四个属性定义的。
那么,由此我们可以引申出,当窗体作为容器,控件作为其中的对象的时候,控件的位置和大小是如何定义的。
下面我们再来看一看控件在窗体中的坐标。
3、控件在窗体中的坐标
4、坐标系的度量
我们刚才了解了关于坐标的八个属性。
这几个属性的值是如何度量的呢?
也就是说,这八个属性值的单位是什么呢?
vb里面提供了一个属性:
scalemode属性来规定坐标的单位。
我们根据实际情况,根据需要可以指定不同的单位。
当我们给容器中的对象定位之后,再改变scalemode的值,对象的大小和相对于容器的位置不会变化。
下表就是scalemode的八个值。
值
表示
说明
0
user
用户自定义
1
twip
缇,系统缺省设置
2
point
磅,每英寸约为72磅
3
pixel
像素,像素是监视器或打印机分率的最小单位。
每英寸里像素的数目由系统设备的分辨率决定。
4
character
字符,打印时,一个字符高1/6英寸,宽1/12英寸
5
inch
英寸,每英寸为2.54厘米
6
millimeter
毫米
7
centimeter
厘米
关于scalemode我们可以举例来看。
Eg:
在窗体上添加一个图片框picture1,添加代码,使程序运行如图:
PrivateSubForm_Click()
Form1.Line(0,0)-(100,100)
Picture1.ScaleMode=3
Picture1.Line(0,0)-(100,100)
EndSub
5、ScaleTop、ScaleLeft等与Top、Left等属性的区别
详情请看教材P148页的三点区别。
可以在窗体上添加一个按钮,修改窗体的scalemode属性,观察command1的top等属性的值的变化。
6、自定义坐标系统
我们不仅可以使用系统默认的VB坐标系统,还可以自定义自己的坐标系统。
可以使用两种方法进行设置。
1)通过修改ScaleTop、ScaleLeft、ScaleWidth、ScaleHeight四个属性的值重新设置坐标系统。
设置后的坐标系统的左上角和右下角的坐标分别是:
(ScaleLeft,ScaleTop)和(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)
2)使用Scale方法重新设置坐标系
格式:
[对象.]Scale(x1,y1)-(x2,y2)
其中:
对象可以是窗体、图片框或打印机。
参数(x1,y1)决定了坐标系的左上角坐标。
(x2,y2)决定坐标系的右下角坐标。
当Scale方法不带参数时,则取消用户自定义的坐标系,采用缺省坐标系。
Eg:
在上例的基础上,添加代码,改变窗体的坐标系,使其好像我们正常所见到的坐标系一样:
原点在窗体的中心,往左是X轴的正轴,往上是Y轴的正轴。
第一种方法:
添加代码:
PrivateSubForm_Load()
Form1.ScaleLeft=-500
Form1.ScaleTop=500
Form1.ScaleWidth=1000
Form1.ScaleHeight=-1000
EndSub
第二种方法:
添加代码:
PrivateSubForm_Load()
Form1.Scale(-500,500)-(500,-500)
EndSub
通过这两种方法,得到的结构都是一样的。
详细情况可以看教材P149页。
Eg:
在窗体上绘制数学中的坐标系。
运行后如图所示:
PrivateSubForm_Load()
Form1.Scale(-10,10)-(10,-10)
EndSub
PrivateSubForm_Click()
Cls
Line(-10,0)-(10,0)
Line(0,10)-(0,-10)
CurrentX=0
CurrentY=0
Print"(0,0)"
CurrentX=9
CurrentY=1
Print"x轴"
CurrentX=1
CurrentY=10
Print"Y轴"
EndSub
二、色彩的选择
我们这一章的内容都是和图形有关的,既然是画图,那就离不开颜色。
在前面的学习中我们也接触到一些颜色的设置方法,现在我们将较详细的学习一下。
Vb中有4种设置颜色的方法:
⑴使用在“对象浏览器”中列出的内部常量之一。
⑵直接输入一种颜色值。
⑶使用RGB函数。
⑷使用QBColor函数。
下面我们就来详细的看看每一种方法的详细设置过程。
1、使用颜色常量或颜色值
这是我们前面已经用过很多次的设置方法。
幻灯片上列出了这些常用的颜色的常量名和对应的值。
这种方法很简单,但是它能表示的颜色很少,只有八种比较常用的颜色可以用这种方法设置。
2、Qbcolor函数
利用这个函数可以设置16种颜色,虽然颜色的种类不多,但是也要比直接用颜色常量表示的颜色多的多。
使用方法是:
Form1.BackColor=QBColor(12)。
函数中的值对应的颜色看幻灯片上的表格。
3、RGB函数
这个函数表示的颜色是最多的。
通过这个函数,如果在显示器允许的情况下,我们可以表示256*256*256种颜色。
所以比较细微的颜色变化是用RGB函数都能表示出来。
通常用于产生随机色。
它利用红、绿、蓝三个基本色的调配来条配颜色。
语法格式见幻灯片。
实际上,利用前面两种表示颜色的方法,一般的颜色都可以实现了。
而RGB函数常常用于产生随机颜色。
Eg:
窗体上显示一组不同颜色的同心圆。
同心圆以窗体的中心为圆心,半径相隔2毫米。
修改窗体的属性form1.autoredraw=true;form1.scalemode=6-millimeter。
(如果想让同心圆显示的图片框上,可以修改图片框的相关属性:
添加一个图片框picture1,并修改其属性:
picture1.autoredraw=true;picture1.scalemode=6-millimeter。
代码作相应的修改。
)
PrivateSubForm_Click()
DimxAsInteger,yAsInteger
DimrAsInteger
x=Form1.ScaleWidth/2
y=Form1.ScaleHeight/2
Forr=0ToForm1.ScaleWidth/2Step2
Form1.Circle(x,y),r,RGB(Rnd*255,Rnd*255,Rnd*255)
Nextr
EndSub
三、绘图的有关属性
1、当前坐标——CurrentX,CurrentY
我们在刚才的例子中也已经用到了。
在这里再给大家举个例子。
Eg:
在窗体上随机打印100个五角星。
PrivateSubForm_Click()
DimiAsInteger
Fori=0To100
CurrentX=Form1.ScaleWidth*Rnd
CurrentY=Form1.ScaleHeight*Rnd
Print"★"
Nexti
EndSub
2、DrawWidth(见教材P161)——设置线宽。
Eg:
在窗体的中轴线上从左向右画一系列宽度递增的直线。
运行界面如图:
PrivateSubForm_Click()
DimiAsInteger
CurrentX=0
CurrentY=Form1.ScaleHeight/2
Form1.ForeColor=QBColor
(2)'前景色为绿色
Fori=1To50Step2'宽度每次增加2个像素
Form1.DrawWidth=i
Line-Step(Form1.ScaleWidth/10,0)
Nexti
EndSub
3、DrawStyle(见教材P162)——设置线形
Eg:
在窗体上画出drawstyle可以表示的线形。
如图:
PrivateSubForm_Load()
Form1.Scale(0,0)-(20,20)
EndSub
PrivateSubForm_Click()
DimiAsInteger:
DimyAsLong
Fori=0To6
Form1.DrawStyle=i
y=(2*i)+3
Line(5,y)-(15,y)
Printi
Nexti
EndSub
4、FillStyle(见教材P163页)——设置填充图形
幻灯片上讲的很详细,不再赘述。
四、图形控件(图片框和图象框)
VB提供了四个控件以简化与图形有关的操作,它们是PicturBox控件、Image控件、Shape控件和Line控件。
其中Image、Shape和Line控件被称为轻图形控件。
关于轻图形控件的定义和优缺点,以及图形文件的存储格式大家了解一下就可以了。
下面我们重点来学习一下四个比较常用的图形控件。
我们先来学习图片框和图形框。
由于这两个控件有很多相似性,所以我们把他们放在一起来作介绍。
1、图片框和图象框
1)属性:
①Align属性:
决定对象在窗体上的显示位置。
图象框没有这个属性。
(同学们可以会议一下,我们在用涂片框做窗体的工具栏时,就是使用这个属性来确定图片框的位置的。
可以现场演示一下。
)
②Appearance属性:
用于设置窗体上PictureBox控件在设计时的绘图风格。
是平面的还是3D的。
(现场演示)
③AutoSize属性:
该属性用于图片框,用于设置控件是否具有自动改变大小的能力,以适应图像文件的尺寸,显示图像文件的全部内容。
④stretch属性:
该属性用于图像框。
当该属性的取值为False时,控件自动改变大小与图形的大小相适应;当其值为True时,显示在控件中的图像的大小将完全适合于控件的大小,这时,图片可能会变形。
(对于③和④这两个属性通过一个图片现场演示。
)
⑤pictrue属性:
决定图片框和图像框中显示的图片。
图形文件可以在设计阶段装入,也可以在运行期间装入。
详情见幻灯片
Eg:
在窗体上添加一个图片框picture1和两个按钮command1和command2。
添加代码:
PrivateSubCommand1_Click()
Picture1.Picture=LoadPicture()
EndSub
PrivateSubCommand2_Click()
Picture1.Picture=LoadPicture("e:
\wq\猫.jpg")
EndSub
如果想配合commondialog控件一起使用,可以打开任意的文件。
那么,在窗体上添加一个commondialog控件,修改command2的代码:
PrivateSubCommand2_Click()
Me.CommonDialog1.ShowOpen
Picture1.Picture=LoadPicture(Me.CommonDialog1.FileName)
EndSub
2)方法:
①Move方法:
可以通过改变图像的Top及Left属性来移动图像。
Eg:
我们可以把书上的例子为大家演示一下。
PrivateSubCommand1_Click()
Picture1.MovePicture1.Left+200
EndSub
PrivateSubCommand2_Click()
Picture1.MovePicture1.Left,Picture1.Top-300
EndSub
PrivateSubCommand3_Click()
Picture1.MovePicture1.Left+750,Picture1.Top-550
EndSub
PrivateSubCommand4_Click()
Picture1.Left=100
Picture1.Top=1800
EndSub
②PaintPicture方法:
幻灯片上讲的很详细。
Eg:
利用paintpicture方法实现如图的功能。
在窗体上添加一个图片框,并加载图片。
再如图添加五个按钮。
复制图形:
大小不变
PrivateSubCommand1_Click()
Cls
sw=Picture1.ScaleWidth
sh=Picture1.ScaleHeight
Form1.PaintPicturePicture1,0,0,sw,sh,0,0,sw,sh,vbSrcCopy
EndSub
翻转图形:
PrivateSubCommand2_Click()
Cls
sw=Picture1.ScaleWidth:
sh=Picture1.ScaleHeight
Form1.PaintPicturePicture1,sw,0,-sw,sh,0,0,sw,sh,vbSrcCopy
EndSub
倒置图形:
PrivateSubCommand3_Click()
Cls
sw=Picture1.ScaleWidth
sh=Picture1.ScaleHeight
Form1.PaintPicturePicture1,0,sh,sw,-sh,0,0,sw,sh,vbSrcCopy
EndSub
倒置并翻转图形:
PrivateSubCommand4_Click()
Cls
sw=Picture1.ScaleWidth
sh=Picture1.ScaleHeight
Form1.PaintPicturePicture1,sw,sh,-sw,-sh,0,0,sw,sh,vbSrcCopy
EndSub
翻转图形并放大两倍:
PrivateSubCommand5_Click()
Cls
sw=Picture1.ScaleWidth
sh=Picture1.ScaleHeight
Form1.PaintPicturePicture1,sw*2,0,-sw*2,sh*2,0,0,sw,sh,vbSrcCopy
EndSub
3)图片框和图像框的区别
关于第二点能否使用print方法打印文本,可以举例。
Picture1.print“”。
Image1.print“”(出错)
3、line控件
属性:
①X1和Y1属性②X2和Y2属性③BorderStyle属性④BorderColor属性⑤BorderWidth属性
(以上属性在VB环境下演示。
)
4、shape控件
属性:
①Shape属性②BorderWidth属性③FillStyle属性④FillColor属性⑤BorderColor属性
(以上属性在VB环境下演示。
)
五、绘图方法
1、画点——PSet
通过幻灯片学习完它的格式后,举例
Eg:
用随机色在窗体的随机位置画点,每秒钟画一个点。
在窗体中添加一个定时器timer1,timer1.interval=1000。
PrivateSubTimer1_Timer()
Form1.DrawWidth=50
Form1.PSet(Rnd*Form1.ScaleWidth,Rnd*Form1.ScaleHeight),RGB(Rnd*255,Rnd*255,Rnd*255)
EndSub
Eg:
在窗体上画两个点,在pset方法中使用step关键字定位。
把form1的scalemode改为6
PrivateSubForm_Click()
Form1.DrawWidth=20'注意,这里是像素值,不是毫米
Form1.PSet(10,20)
Form1.PSetStep(10,0)
EndSub
2、画线画方框——Line方法
通过幻灯片学习line方法的格式,并研究幻灯片上的一些例句。
Eg:
画如下图所示的矩形。
PrivateSubForm_Click()
Form1.ScaleMode=3
Form1.DrawStyle=6
Form1.DrawWidth=16
Form1.Line(10,10)-Step(200,100),vbYellow,B
Form1.DrawWidth=1
Form1.Line(10,10)-Step(300,100),vbRed,B
EndSub
3、画圆、画弧、画椭圆——Circle方法
通过幻灯片学习line方法的格式,并研究幻灯片上的一些例句。
Eg:
画如图所以得椭圆。
PrivateSubForm_Click()
FillStyle=1
Form1.Circle(1000,1500),1000,,,,2
FillStyle=0
Form1.Circle(3000,1500),1000,,,,1/2
EndSub
注意:
circle方法中的color参数描述的是圆、弧、椭圆的外框线颜色,不是填充颜色。
PrivateSubForm_DblClick()
Form1.FillStyle=0
Form1.FillColor=vbYellow
Form1.Circle(2000,1000),500,vbYellow,-3.67,-2.61
Form1.Circle(3000,1000),500,,-3.67,-2.61
EndSub
4、清除绘图区域内容——Cls方法
六、多媒体控制接口
这部分了解一下就可以了。
能会编写这种最简单的代码就行了。
PrivateSubForm_Load()
MMControl1.DeviceType=mpegvideo
Me.CommonDialog1.Filter="mp3|*.mp3"
EndSub
PrivateSubCommand1_Click()
MMControl1.Command="close"'播放新的多媒体文件时先关闭其他文件
Me.CommonDialog1.ShowOpen
Form1.Caption=Me.CommonDialog1.FileName
MMControl1.FileName=Me.CommonDialog1.FileName
MMControl1.Command="open"
MMControl1.Command="play"'不用点MMcontrol中的播放按钮就可以直接播放了
EndSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形 图象 多媒体
![提示](https://static.bdocx.com/images/bang_tan.gif)