第五章基础控件的增强功能二

上传人:无*** 文档编号:163186820 上传时间:2022-10-20 格式:PPT 页数:37 大小:242KB
收藏 版权申诉 举报 下载
第五章基础控件的增强功能二_第1页
第1页 / 共37页
第五章基础控件的增强功能二_第2页
第2页 / 共37页
第五章基础控件的增强功能二_第3页
第3页 / 共37页
资源描述:

《第五章基础控件的增强功能二》由会员分享,可在线阅读,更多相关《第五章基础控件的增强功能二(37页珍藏版)》请在装配图网上搜索。

1、第五章 基础控件的增强功能(二)5-1 image控件功能:提供程序显示图像,这个图片可以是位图、图标(.bmp .jpg .gif )等文件格式图形。其关键性接口成员:类别 名称 说明 属性 picture 用于设置装载的图形 stretch 可伸缩性装载图形可以在属性窗口中设置,也可以在运行时用程序代码加载。用程序代码对image控件装载图片的方法:image名.picture=loadpicture(文件标识符)当装入某张图片到image控件中时,image默认的模式是让图像框的大小随着装入的图像来改变。如果事先将其stretch属性设置为true,那么被装入的图像将按照图像框的大小做等

2、比例的缩放。例:编写一个显示图片程序,能按照用户要求可以将图像调整成 跟image框相等大小或者以图像原来大小来显示。(ch05练习1.vbp)5-2 picturebox控件功能:picture控件除了可以显示图像之外,还可以用来描绘图形。Picturebox被装入图片时,picturebox的大小并不会随着图象的大小来改变,这样的好处是:除了显示图片,还保留某些空间来绘图。当确实需要将picturebox控件大小调整到和图像大小相同,此时只需要将picturebox中autosize属性设置为true。例:利用picturebox控件显示西瓜图片,并在右侧画上一个矩形和椭园形。(ch05练

3、习2.vbp)例:写一个可供用户画直线、弧、园、椭园及输入文字的程序。(ch05画板.vbp)1)在窗体上放置一个框架,在内放置一个option控件数组。2)再放置一个框架,在内放置一个label控件数组。3)在窗体上放置一个picturebox控件。在窗体通用处定义模块全局变量dim x0,y0 as singledim x1,y1 as singledim ang1,ang2 as singledim k,r as singledim switch as integer无论选择哪一种画图,都会触发option1_click(index as integer)事件在该事件中必须用一个全局变量

4、记住用户选择了哪种画图(用switch)有些画图要求给初始值,则这些初始值在这里给出。Private sub option1_click(index as integer)switch=indexif swich=3 then pi=3,14159 ang1=pi*val(inpuitbox(“输入起始角:”)/180 ang2=pi*val(inpuitbox(“输入终止角:”)/180endifif switch=4 thenk=val(inputbox(“输入椭园比率:”)end ifif switch=5 thenpicture1.mousepointer=3end ifif swit

5、ch=6 thenpicrure1.clsx0=emptyx1=emptyendifend sub无论选择哪一种画图方式,都是按下鼠标、移动鼠标、放开鼠标。即是一定触发mousedown、mousemove、mouseup事件,在每一个事件中利用switch判断用户选择哪种画图。写下这个画图的代码。在mousedown事件中获得画图的起始点。Private sub picture1_mousedown(button as integer,shift as integer,x as single,y as single)x0=xy0=yif switch5 thepicture1.mousepo

6、inter=2endifend sub在mousemove事件中,根据用户选择画图方式,写下代码:private sub picture1_mousemove(button as intger,shift as integer,x as single,y as single)select case switch case 0 写下画直线代码case 1 写下画矩形代码case 2 写下画园代码case 3 写下画弧代码case 4 写下画椭圆代码 end selectend sub在mouseup事件中,根据用户选择画图方式,写下代码:private sub picture1_mouseup(

7、button as intger,shift as integer,x as single,y as single)select case switch case 0 写下画直线代码case 1 写下画矩形代码case 2 写下画园代码case 3 写下画弧代码case 4 写下画椭圆代码case 5 写下在picturebox中输入文字的代码 end select end sub无论用户单击哪一种颜色,都会触发 privte sub label1_click(index as integer),index就是控件数组的下标。Private sub label1_click(index as

8、integer)select case indexcase 0picture1.forecolor=vbredcase 1picture1.forecolor=vbyellowcase 2picture1.forecolor=vbgreencase 3picture1.forecolor=vbbluecase 4picture1.forecolor=vbblackend selectend subPicture属性与image属性有何区别除了image和picturebox控件之外,许多控件及对象都有picture属性,但是对于picturebox及from来说,除了picture属性之外,还

9、含有image属性,image属性与picture属性有何区别?1)从可读写的角度来看image属生并不是“设计阶段”可以使用的属性,所以在属生窗口中看不到这个属性,另一方面进入“运行阶段”之后,picture属性可读可写,而image属性是只读的。2)背景与图像如果将form和picture看作一面墙,那么picture属生就像油漆所涂上去的背景图,而image属性则像是使用粉笔画上去的图形或文字。例:运行ch05picimg.vbp发现属于image的图像会消失,如何恢复其原来图像,可以使用autodraw属性或者paint事件。为什么一旦将autoredraw属性设置为true,pict

10、urebox、form就具有重新绘图形能力。原因:一旦将autoredraw属性设为true,那么所有绘图的操作和内容都会记录在image属性中,当picturebox和form重新回到屏幕时,所有绘图操作就会重新被运行一次,使得picturebox及form恢复原样。如何保存picturebox或form上面图像方法:调用savepicture语句,其格式:保存背景图:savepicture 对象名.picture,图像文件名保存对象的整个图像:savepicture 对象名.image,图像文件名例:保存picturebox或form上面图像。(ch05练习4.vbp)例:在上面程序中,加

11、上一个命令按钮,其作用在picture1上画上一个矩形及园形,然后按“image“方式 保存该图形,观察是否保存了矩形及园形,如果没有,进行修改再保存。(ch05练习5.vbp)练习:打开练习3.vbp工程,修改程序,使得该程序具有将画的图形保存下来。5-3 滚动条控件有水平滚动条(hscrollbar)和垂直滚动条(vscrollbar),它们除了方向不同外,两者的用法和接口成员是完全相同,下表是滚动条的关键性接口成员:类别名称说明 属性min滚动条的最小值max滚动条的最大值smallchage单击滚动条上升按钮或下降按钮变动值largechange单击滚动条空白处的变动值value滚动条

12、的当前值 事件change当value属性值改变时发生这个事件 例:在窗体上放置一个滚动条要控件,要求将滚动条的值显示在文本框(ch05练习7.vbp)在vscrollbar1对象的属性值设置如下:min0max100smallchange1largechange10例:设计一个调色板应用程序(ch05练习8.vbp)提示:要使用到一个RGB函数格式:RGB(red,green,blue)其中:red、green、blue数值:0255功能:返回一个RGB颜色值5-4 计时器控件计时器控件是一种按一定时间间隔触发事件的控件,在应用程序中用于在一定时间间隔执行某些操作。关键性接口成员:类别名称说

13、明属性name对象名称enable决定对象是否有interval触发计时器两个事件之间毫秒数。单位为毫秒(1/1000秒)取值范围:064767事件timer在间隔了一个interval设定时间后触 发该事件。过程:VB中有两类过程1)一类是系统提供的内部函数过程和事件过程。2)另一类是用户根据自已需要定义,供事件过程多次调用的过程。使用过程的好处是使程序简练,便于调试和维护。在VB中自定义过程分以下几种:以“sub”保留字开始的子过程以“function”保留字开始的函数过程以“property”保留字开头的属性过程以“event”保留字开始的事件过程1)过程的定义自定义过程和函数方法:在窗

14、体/标准模式块的代码窗口中把插入点放在所有过程之外,输入子过程名或function函数过程名即可。自定义过程形式:staticpublicprivatesub 子过程名(参数列表)局部变量或常量定义语句 exit sub语句end sub自定义函数:staticpublicprivate function 函数过程名(参数列表)as 类型局部变量或常量定义语句函数名=返回值exit funtion语句函数名=返回值end function参数列表:byval 变量名 as 类型 ,byval 变量名 as 类型有形参和哑元(byval 变量名是形参),形参是按值传递,哑元是按地址传递,(亦称引

15、用传递),亦可以无参数,但在函数过程中无参数时亦要加“()”在定义函数过程中,缺省 as 类型则函数值是变体类型例:设计一个倒计时应用程序(ch05/练习9.vbp)分析:1)单击“设置倒计时按钮时,输入倒计时分钟数,显示格式:mm:ss 2)单击“开始倒计时”按钮后,每隔一秒钟,必须重新向label 框caption 赋值所剩分钟数,显示格式:mm:ss 3)在窗体中添加一个计时器:timer1timer1.interval=1000当timer1.enable=true则每隔一秒触发timer1_timer事件,在该事件中向label框的caption赋以所剩的时间,显示格式:mm:ss

16、ss1(秒)TF mm1(分)TF时间到timer1.enable=false退出程序mm=mm-1ss=59 ss=ss-1 显示时间label1.caption=timestring(mm,ss)4)由于输入的倒计时数是数值,且程序中mm,ss亦是数值型变量,所以必须编写一个函数将这些时间转换为指定格式:mm:ssDim mm,ss As Integer mm表示分,ss表示秒,都是全局变量Function timestring(ByVal m As Integer,ByVal s As Integer)Dim mstr,sstr As StringIf m 10 Then mstr=0+

17、Trim(Str(m)m表示分,s表示秒Else mstr=Trim(Str(m)End IfIf s 10 Then sstr=0+Trim(Str(s)Else sstr=Trim(Str(s)End Iftimestring=mstr+:+sstrEnd Function利用图片框和计时器设计简单动画 我们常希望在屏幕上出现动画效果,比如汽车向前行驶、地球绕太阳旋转等。其实简单的动画无非是使用一个图像连续地在屏幕上移动位置而已。复杂一些动画除了将一个图像整体移动外,还可以改变图像的形状和尺寸。在VB中实现动画有如下几种方法:1)使用move方法移动控件或图片2)改变图像的位置和尺寸,达到

18、动画效果3)在不同位置显示不同的图片不论是用何种方法,都有可以用计时器定时触发有关动画的事件过程,用计时器的inetrval属性控制图像移动速度。Move方法:对象名.move left,top ,width,length left:表示对象左边框离窗体边框距离top:表示对象顶部与窗体顶部之间距离width:表示对象新宽度length:表示对象新高度 例:以蓝天白云为背景,显示地球围绕太阳旋转的画面。(ch05练习9a.vbp)分析:1)放置一个picturebox在窗体上与窗体大小相同,放置背景图 clouder.bmp 2)在picture1上放置两个image1,image2。在for

19、m_load事件中:将image1.stretch=true image2.stretch=true将image1移到屏幕中心并装入图片sum.ico,在image2中装入earth.ico3)地球绕着太阳作园周运动(园周半径r=1500)即是说:image2控件的左上角坐标(x,y)是不断变化。width/2ir(x,y)x=r*cos(i)+width/2-image2.width/2 y=height/2-r*sin(i)-image2.height/2 我们想每0.1秒更换一次(x,y)值,则在timer1.interval=100在timer1_timer事件中写下:Private

20、Sub Timer1_Timer()Dim x,y As Single Dim r As Integer Static i As Single r=1500 x=Cos(i)*r+Width/2-Image2.Width/2 y=Height/2-r*Sin(i)-Image2.Height/2 i=i+0.1 Image2.Move x,yEnd Sub例:在窗体上画一幅明月高挂、群星闪烁的画面。要求在程序开始运行时,将一个月亮的图形装入到图像框中。窗体上有一个计时器,其interval属性值为500,因此计时器每隔0.5秒发生一次timer事件。在timer事件过程中,在随机产生的500个

21、(x,y)坐标处以白色“点亮”该点。因此出现500个亮点,然后以cls方法清除屏幕。在下一次timer事件发生时,又出现另外500个点,然后又清除屏幕。如此反复就出现“群星闪烁”的效果。(ch05练习9c.vbp)5-5 文件夹控件文件夹控件包含:驱动器列表框:drivelistbox文件夹列表框:dirlistbox文件列表框:filelistbox驱动器列表框:当drivelistbox放置在窗体之后,它会显示当前驱动器,而拉下右边的下拉按钮,可以列出当前计算机所有的磁盘驱动器,经用户选择后,可改变当前驱动器。类别名称说明属性drive读取(修改)当前驱动器号事件change当前驱动器有所

22、变动时则发生该事件。文件夹列表框:当dirlistbox放置在窗体之后,它会显示当前文件夹,而且用户也可以改变这个文件夹。在程序中,可以通过它的path属性读取当前文件夹或改变当前文件夹类别名称说明属性path 读取(修改)当前文件夹事件change当前文件有所变动时则发生该事件。文件列表框:当filelistbox放置在窗体之后,它会显示某个指定文件夹(由path属性决定)的某类文件列表(由pattern属性决定)。刚放置在窗体上的filelistbox控件pattern属性值为“*.*”,表示显示所有文件,但是可以利用属性来改变它的值。当用户从文件夹列表框中选择了文件,程序可以利用file

23、name属性读取这个 文件名。类别名称说明 事件click当在文件列表框中选取了文件时发生该事件。属性path当前文件夹filename被选定的文件名称pattern用来筛选filelistbox的文件Filelistbox、dirlistbox、drivelistbox的连动:1)使文件夹列表框可以显示驱动器中的文件夹。Private Sub Drive1_Change()Dir1.Path=Drive1.DriveEnd Sub2)使得filelistbox得以显示当前文件夹中的文件Private Sub Dir1_Change()File1.Path=Dir1.PathEnd Sub3)

24、读取在文件列表框中选取文件的完整文件标识符赋给字符串变量,并输出到立即窗口。Private Sub File1_Click()Dim fullpath As StringIf Right(File1.Path,1)Then fullpath=File1.Path+File1.FileNameElse fullpath=File1.Path+File1.FileNameEnd IfDebug.Print fullpathEnd Sub例:编写一个简单图像浏览器程序(ch05练习12.vbp)5-6 通用对话框在工具箱中添加commondialog控件单击“工程/部件”引用“microsoft c

25、ommon dialog control6.o”commondialog控件显示方法方法显示的对话框showopen“打开”或“open“对话框showsave“另存”或“save file as”对话框showcolor“颜色”或“color”对话框showfont“字体”或“fint”对话框showprinter“打印”或“printr”对话框showhelp调用windows帮助对话框设置对话框标题等信息属性名称说明dialigtitle对话框标题initdir起始文件夹filename文件名称filter文件类型filterindex默认的filter索引flags标志,参阅后面的说明

26、filter属性设置格式:filter=“筛选描述1|筛选条件1|筛选描述2|筛选条件2”读取用户所选取的文件属性名称说明filetitle文件名称,但不含路径filename文件名称,含完整路径例:修改ch05练习12.vbp,选择图片文件采用commondialog对话框。(ch05 练习14.vbp)例:修改上一题,希望以原图来显示,如果图像比显示区小,那么将图像显示在显示区的中央,如果图像比显示区大,就提供滚动条让用户浏览显示区外的图像。(ch05练习15.vbp)1)把image设置在picturebox中央image1.left=(picture1.scalewidth-image

27、1.width)/2image1.top=(picture1.scaleheight-image1.height)/22)显示大图像的技巧如果picturebox里的image(用来显示图像)比picturebox大,则image超出picturebox的部分就不会被显示出来。xy-x-y红线:表示picturebox虚绿线:表示image黑色点划线:表示移动 后image(-x,-y)要显示右方和下方超出部分,该怎样办?把image的左上角坐标(left,top)设置成负值(-x,-y)后,则垂直坐标小于Y,水平坐标小于X的部分不会显示出来,而将图像右下方的区域显示出来。即:image1.l

28、eft=-(image1.width-picture1.scalewidth)image1.top=-(image1.height-picture1.scaleheigh)3)为了让用户方便浏览全部的图像,还在设置一个水平滚动条和一个垂直滚动条,而滚动条的几个关键属性设置为:vscroll1.min=0vscroll1.max=image1.height-picture1.heightvscroll1.largechange=10vscroll1.smallchange=1hscroll1.mi=0hscroll1.max=image1.width-picture1.widthhscroll1

29、.largechange=10hscorll1.smallchange=1要保证image比picturebox高,才正确要保证image比picturebox宽,才正确4)图像滚动:当单击水平滚动条时,会触发事件:private sub hscroll1_change()image1.left=-hscroll1.valueend subx 当单击垂直滚动条时,会触发事件:private sub vscroll1_change()image1.top=-vscroll1.valueend sub 字体对话框的调用 字体对话框属性使用 color 表示字体颜色fontname用户所选字体名称f

30、ontsize用户所选字体大小min(max)用于设定用户在字体对话框中所能选择的最小值和 最大值。即用户只能在此范围之内选择字体大小。Flag在显示字体对话框之前必须设置flags属性 常数值 说明cdlcfscreenfonts&H1 显示屏幕字体cdlcfprintfonts&H2 显示打印机字体cdlcfboth&H3 显示打印机字体和屏幕字体cdlcfeffects&H100 在字体对话框显示删除线和下划 线、检查框及颜色组合fontbold粗体(true/false)fontitalic斜体(true/false)fontstrikethru删除线(true/false)fontu

31、nderline下划线(true/false)例:设计一个如下介面的程序,当单击字体按钮时能设置文本框字体(ch05练习16.vbp)Private Sub Command1_Click()CommonDialog1.Flags=&H3 Or&H100CommonDialog1.DialogTitle=设置文本框中字体CommonDialog1.ShowFontText1.FontName=CommonDialog1.FontNameText1.FontSize=CommonDialog1.FontSizeText1.FontBold=CommonDialog1.FontBoldText1.FontItalic=CommonDialog1.FontItalicText1.FontStrikethru=CommonDialog1.FontStrikethruText1.FontUnderline=CommonDialog1.FontUnderlineText1.ForeColor=CommonDialog1.ColorEnd Sub

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!