基础控件的增强功能二.ppt

上传人:牧羊曲112 文档编号:6264039 上传时间:2023-10-11 格式:PPT 页数:37 大小:214KB
返回 下载 相关 举报
基础控件的增强功能二.ppt_第1页
第1页 / 共37页
基础控件的增强功能二.ppt_第2页
第2页 / 共37页
基础控件的增强功能二.ppt_第3页
第3页 / 共37页
基础控件的增强功能二.ppt_第4页
第4页 / 共37页
基础控件的增强功能二.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《基础控件的增强功能二.ppt》由会员分享,可在线阅读,更多相关《基础控件的增强功能二.ppt(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(“输入终止角:”)/180endif,if switch=4 thenk=val(inputbox(“输入椭园比率:”)end ifif switch=5 thenpicture1.mousepointer=3end ifif s

5、witch=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.mou

6、sepointer=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_mo

7、useup(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(in

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

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

10、rue,picturebox、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单击滚动条空白处的变

12、动值value滚动条的当前值 事件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赋以所

16、剩的时间,显示格式:mm:ss,ss1(秒),T,F,mm1(分),T,F,时间到timer1.enable=false退出程序,mm=mm-1,ss=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 St

17、ringIf m 10 Then mstr=0+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)使用mov

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

19、e1上放置两个image1,image2。,在form_load事件中:将image1.stretch=true image2.stretch=true将image1移到屏幕中心并装入图片sum.ico,在image2中装入earth.ico3)地球绕着太阳作园周运动(园周半径r=1500)即是说:image2控件的左上角坐标(x,y)是不断变化。,width/2,i,r,(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

20、=100在timer1_timer事件中写下:Private 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秒发生

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

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

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

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

25、添加commondialog控件单击“工程/部件”引用“microsoft common dialog control6.o”commondialog控件显示方法方法显示的对话框showopen“打开”或“open“对话框showsave“另存”或“save file as”对话框showcolor“颜色”或“color”对话框showfont“字体”或“fint”对话框showprinter“打印”或“printr”对话框showhelp调用windows帮助对话框,设置对话框标题等信息属性名称说明dialigtitle对话框标题initdir起始文件夹filename文件名称filter文

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

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

28、坐标小于Y,水平坐标小于X的部分不会显示出来,而将图像右下方的区域显示出来。即:image1.left=-(image1.width-picture1.scalewidth)image1.top=-(image1.height-picture1.scaleheigh)3)为了让用户方便浏览全部的图像,还在设置一个水平滚动条和一个垂直滚动条,而滚动条的几个关键属性设置为:vscroll1.min=0vscroll1.largechange=10vscroll1.smallchange=1hscroll1.mi=0hscroll1.largechange=10hscorll1.smallchang

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

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

31、个如下介面的程序,当单击字体按钮时能设置文本框字体(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,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号