VisualBasic界面设计(下).ppt_第1页
VisualBasic界面设计(下).ppt_第2页
VisualBasic界面设计(下).ppt_第3页
VisualBasic界面设计(下).ppt_第4页
VisualBasic界面设计(下).ppt_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江南大学信息工程学院计算机基础部,2008-01-20,第3章VisualBasic界面设计(下),制作者:钱瑛,本章的学习重点和难点,键盘鼠标事件和拖放菜单设计常用ActiveX控件介绍图形和多媒体制作合理选用对象和窗体布局,键盘与鼠标事件过程,键盘事件过程对于接受文本输入的控件,如:文本框、简单组合框和下拉组合框等,需要控制和处理输入的文本,常常需要对键盘事件进行编程KeyPress、KeyDown和KeyUp键盘事件只用于能够聚焦的对象,如窗体、文本框、命令按钮、选项按钮、复选框、组合框、列表框、图片框、滚动条等控件对于窗体,仅当它上面没有可视和有效的控件或KeyPreview属性被设置为True时才能接收键盘事件,键盘与鼠标事件过程,键盘事件过程KeyPress事件当用户按下和松开一个能产生Ascii码的键时发生KeyPress事件。严格地说,当按下某个能产生Ascii码的键时,所触发的是当前得到焦点的那个对象的KeyPress事件PrivateSub对象名_KeyPress(KeyAsciiAsInteger)EndSub参数KeyAscii就是该过程接受到的按键的Ascii码按下大写字母“B”,KeyAscii的值为66按下小写字母“b”,KeyAscii的值为98,键盘与鼠标事件过程,键盘事件过程KeyPress事件在键盘上的按键并非都能产生Ascii码,如:方向键、功能键F1F12、Shift、Ctrl、Alt键就不产生Ascii码,不会引发KeyPress事件,而数字、大小写字母等可打印的键盘字符、Enter、BackSpace、Esc、Tab等都可以KeyPress事件过程在截取TextBox或ComboBox控件所输入的击键时是非常有用的,它可立即测试击键的有效性或在字符输入时对其进行格式处理改变keyascii参数的值会改变所显示的字符*例题15、*例题16,*例题15,编写程序,实现对于用户在文本框中输入的字母,不管大小写,始终以大写显示在文本框中分析:小写字母按键的Ascii值的范围97,122小写转换成大写字符小写字母与大写字母的Ascii差值为32输入时立即转换编写文本框的KeyPress事件过程,PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=97AndKeyAscii=aAnd_Text1.TextAsc(z)ThenText2.Text=Chr(x+1)ElseText2.Text=Chr(x+1-26)ElseText2.Text=数据非法!EndIfEndIfEndSub,键盘与鼠标事件过程,键盘事件过程KeyUp和KeyDown事件过程和KeyPress事件不同,KeyUp和KeyDown事件返回的是键盘的直接状态,即KeyUp和KeyDown事件返回的是“键”,而KeyPress事件返回的是“字符”的Ascii码。当用户按下键盘上的任意一个键时,就会触发焦点对象的KeyDown事件,当释放按键,就会触发KeyUp事件,键盘与鼠标事件过程,键盘事件过程KeyDown事件过程PrivateSub对象名_KeyDown(keycodeAsInteger,_shiftAsInteger)EndSubKeyUp事件过程PrivateSub对象名_KeyUp(keycodeAsInteger,_shiftAsInteger)EndSub,键盘与鼠标事件过程,键盘事件过程KeyUp和KeyDown事件过程KeyCode参数是用户按下的那个键的扫描码(键盘上的每一个按键都一个扫描码,且各自不同),该码以“键”为准,它不同于KeyPress事件中的KeyAscii参数(以“字符”为准)大小写字母“A”和“a”用的是同一个键,所以它们的扫描码相同,即KeyCode相同,而Ascii码不同(“A”是65、“a”是97),即KeyAscii不同往往只能通过KeyCode参数了解用户按下键盘上的哪个键(不是字符),键盘与鼠标事件过程,键盘事件过程KeyUp和KeyDown事件过程Shift参数是Shift、Ctrl和Alt三个转换键目前按下的状态信息;取值是一个是位域,它用最少的位响应SHIFT键(位0)、CTRL键(位1)和ALT键(位2)。这些位分别对应于值1、2和4,键盘与鼠标事件过程,键盘事件过程KeyUp和KeyDown事件过程的应用扩展的字符键如功能键等定位键键盘修饰键和按键的组合区别数字小键盘和常规数字键*例题17,下列情况不会触发KeyDown和KeyUp事件窗体有一个CommandButton控件,并且Default属性设置为True时的Enter键窗体有一个CommandButton控件,并且Cancel属性设置为True时的Esc键Tab键*例题18,*例题17,编写程序,利用KeyDown和KeyUp事件显示按下键和释放键情况分析:根据KeyCode返回对应的字符Chr函数,PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)Print按下;Chr(KeyCode);KeyCodeEndSubPrivateSubText1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)Print释放;Chr(KeyCode);KeyCodeEndSub,PrivateSubform_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfShift=1ThenPrint按下Shift键;KeyCodeIfShift=2ThenPrint按下Ctrl键;KeyCodeIfShift=3ThenPrint按下Ctrl+Shift键;KeyCodeIfShift=4ThenPrint按下Alt键;KeyCodeIfShift=5ThenPrint按下Alt+Shift键;KeyCodeIfShift=6ThenPrint按下Alt+Ctrl键;KeyCodeIfShift=7ThenPrint按下Alt+Ctrl+Shift键;KeyCodeEndSubPrivateSubform_KeyUp(KeyCodeAsInteger,ShiftAsInteger)Print释放;KeyCodeEndSub,*例题18,编写程序,利用KeyDown和KeyUp事件显示按下和释放转换键情况,例3-2编程判断窗体上按下的键是否为大写字母键,PrivateSubForm_KeyDown(KeyCodeAsInteger,_ShiftAsInteger)IfKeyCode=Asc(A)AndKeyCode=Asc(Z)ThenIfShift=1ThenPrint你按下的是大写字母&Chr(KeyCode)EndIfEndIfEndSub,键盘与鼠标事件过程,鼠标器事件过程鼠标的单击和双击事件鼠标事件:鼠标的按下、移动和释放事件,即MouseDown、MouseMove和MouseUp事件适用于以下对象,包括窗体、文本框、命令按钮、选项按钮、复选框、列表框、图片框、标签、框架等鼠标事件被用来识别和响应各种鼠标状态,并把这些状态看作独立的事件;在按下鼠标按钮并释放时,Click事件只能把此过程识别为一个单一的操作单击操作鼠标事件不同于Click事件和DblClick事件之处还在于,鼠标事件能够区分各鼠标按钮与Shift、Alt、Ctrl键,键盘与鼠标事件过程,鼠标器事件过程MouseDown事件过程PrivateSub对象名_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)EndSubMouseUp事件过程:PrivateSub对象名_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)EndSub,键盘与鼠标事件过程,鼠标器事件过程MouseMove事件过程:PrivateSub对象名_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)EndSubShift、X、Y参数的含义同键盘事件Button参数值指示此时按下或释放了哪个鼠标键,该参数是一个整数,键盘与鼠标事件过程,鼠标器事件过程对于MouseMove事件来说,button参数指示的是所有鼠标按键当前的状态;一个MouseMove事件可指示某些、全部或没有一个按钮被按下MouseDown和MouseUp事件来说,button参数在每个事件精确地指示一个按键,即不能检查两个或三个键同时被按下或松开的情况,因此取值只能是下表中的前三种,键盘与鼠标事件过程,鼠标器事件过程MouseDown是三种鼠标事件中最常使用的事件。例如,在运行时可用它调整控件在窗体上的位置,也可用它实现某些图形效果。按下鼠标按钮时就可触发此事件。MouseMove事件伴随鼠标指针在对象间移动时连续不断地产生。除非有另一个对象捕获了鼠标,否则,当鼠标位置在对象的边界范围内时该对象就能接收MouseMove事件*例题19*例题20*例题21,*例题19,利用上述鼠标事件,在窗体上绘制图形,要求:按下鼠标开始绘制,并根据鼠标移动的位置进行绘制,释放鼠标停止绘制分析:,DimdrawstateAsBoolean设置绘制状态标志Form_Load:DrawWidth=10设置绘制笔刷的宽度ForeColor=RGB(0,0,255)设置绘制的颜色Form_MouseDown:drawstate=True表示开始下笔绘制Form_MouseMove:IfdrawstateThenPSet(X,Y)根据目前鼠标移动的位置绘制点EndIfForm_MouseUp:drawstate=False表示停笔,*例题3-20,结合Move方法使用鼠标的MouseDown事件,实现根据鼠标按下的位置控制“云朵”在背景图片上的任意飘移分析:,DimmxAsSingle,myAsSingle,dxAsSingle,dyAsSinglePrivateSubForm_Load()Timer1.Interval=10EndSubPrivateSubpicture1_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)mx=(X-Image1.Left)/100计算云朵每次微移量my=(Y-Image1.Top)/100dx=X:dy=Y记录下目标位置Timer1.Enabled=TrueEndSubPrivateSubTimer1_Timer()Image1.MoveImage1.Left+mx,Image1.Top+myIfAbs(Image1.Left-dx)1OrAbs(Image1.Top-dy)=Shape2.LeftAndX=Shape2.TopAndY=Shape2.LeftAndX=Shape2.TopAndY=1ThenText1.Text=Str(Val(Text1.Text)-1)ProgressBar1.Value=10-Val(Text1.Text)ElseEndEndIfEndSub,Slider控件,Slider控件是一个包含滑块和可选择刻度标记的滑杆例3-18PrivateSubSlider1_Click()Text1.Text=Slider1.ValueEndSub,RichTextBox控件,RichTextBox控件和TextBox控件一样可用于文本的输入和编辑,但RichTextBox控件提供了比TextBox控件更高级的格式特性RichTextBox控件的添加需要选择“MicrosoftRichTextBoxControl6.0”部件1RichTextBox控件的常用属性2RichTextBox控件的方法,RichTextBox控件,RichTextBox控件,例3-19,PrivateSubCommand1_Click()RichTextBox1.LoadFileApp.Path+formula.txt,1打开本应用程序所在路径下的formula.txt文本文件EndSubPrivateSubCommand2_Click()DimnameAsStringname=InputBox(输入新文件名!,保存文本文档)文件名由用户输入RichTextBox1.SaveFileApp.Path+name+.rtf,0EndSub,PrivateSubCommand4_Click()IfRichTextBox1.SelText=ThenMsgBox先选中文本!ElseRichTextBox1.SelCharOffset=100RichTextBox1.SelFontSize=8EndIfEndSub,例3-19,PrivateSubCommand3_Click()IfRichTextBox1.SelText=ThenMsgBox先选中文本!ElseRichTextBox1.SelCharOffset=-100RichTextBox1.SelFontSize=8EndIfEndSub,图形绘制,坐标系统ScaleMode属性值及其说明,自定义坐标系统的方法,1ScaleTop属性/ScaleLeft属性/ScaleWidth属性/ScaleHeight属性2Scale方法对象名.Scale(x1,y1)(x2,y2)格式说明:(x1,y1)表示对象左上角坐标,(x2,y2)表示对象右下角坐标,VisualBasic根据这两组坐标参数计算出ScaleLeft、ScaleTop、ScaleWidth和ScaleHeight4个属性的值。若参数默认时,则采用默认的坐标系例如,Form1.Scale(-10,-10)-(20,-10),例3-20,PrivateSubForm_Click()Form1.ScaleLeft=-10Form1.ScaleTop=-10Form1.ScaleWidth=30Form1.ScaleHeight=20Line(-10,0)-(20,0)Line(0,-10)-(0,10)CurrentX=0:CurrentY=0:Print(0,0)CurrentX=1:CurrentY=6:PrintYCurrentX=19:CurrentY=1:PrintXEndSub,定义颜色,1颜色属性,2颜色常量,例如,要将Form1的前景色设置为红色。Form1.ForeColor=VbRedForm1.ForeColor=&HFF,3颜色函数,(1)RGB函数RGB(r,g,b)格式说明:r,g,b3个参数分别表示红、绿、蓝3种颜色,取值在0255之间。如果超过255,也被看作255。每种颜色都是由3种颜色调和而成。例如,要将窗体的背景色设置为绿色,代码如下:Form1.BackColor=RGB(0,255,0),3颜色函数,(2)QBColor函数QBColor(颜色)格式说明:颜色参数是取值在015之间,表示一共有16种颜色。例如,要将直线Line1的线条颜色设置为黄色,代码:Line1.BorderColor=QBColor(6),绘图属性,绘图方法,对象名.LineStep(x1,y1)-Step(x2,y2),颜色,BF对象名.CircleStep(x,y),半径,颜色,起始角,终止角,长短轴比率对象名.PsetStep(x,y),颜色,1.Line方法,调用格式说明:(1)(x1,y1)参数用于指定线段的起点,若省略,则表明起点为当前点(CurrentX,CurrentY)。(x2,y2)参数用于指定线段的终点。(2)使用Step参数,表示起点或终点坐标是相对当前点(CurrentX,CurrentY)的,不使用该参数,表示起点或终点坐标是相对原点的。(3)颜色参数用于指定绘制图形的颜色,若省略,则使用对象当前的ForeColor属性指定的颜色。(4)使用B参数表示绘制矩形,(x1,y1)参数和(x2,y2)参数指定矩形的左上角和右下角坐标。(5)只有使用了B参数,F参数才能使用,表明用指定颜色填充矩形;若省略,以对象当前的FillColor和FillStyle属性值来填充矩形。,2.Circle方法,调用格式说明:Step参数和颜色参数与Line方法相同,其余参数说明如下。(1)(x,y)参数用于指定圆心坐标。(2)绘制圆弧和扇形时需要设置起始角参数和终止角参数。当起始角、终止角取值在02时为圆弧;出现负值时为扇形,负号表示画圆心到圆弧的半径。图3-41例3-22运行界面(3)椭圆需通过长短轴比率参数来控制,默认为1,即画圆。,3.Pset方法,调用格式说明:(x,y)参数为画点的坐标,其他参数与Line方法相同。,例3-21Line方法示例,PrivateSubForm_Click()DrawWidth=3Line(600,600)-(3200,600)Line(1300,400)-(2500,800),vbBlue,BFLine(1000,200)-(2800,1000),BEndSub,例3-22Circle方法示例,PrivateSubForm_Click()DrawWidth=2Circle(600,600),4001-圆Circle(1800,600),400,0.52-椭圆Circle(3000,600),400,0,3.143-圆弧Circle(4200,800),600,-3.14/2,-3.144-扇形EndSub,例3-23用Pset方法实现徒手画,DimflagAsBooleanPrivateSubForm_Load()DrawWidth=3:ForeColor=RGB(1,120,0)EndSubPrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)flag=True开始徒手画EndSubPrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)Ifflag=TrueThenPSet(X,Y)EndSubPrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)flag=False结束徒手画EndSub,(1)Paintpicture方法,该方法能将窗体或图片框中的矩形区域的像素复制到另一个对象上对象名.PaintPicture传送源,x1,y1,w1,h1,x2,y2,w2,h2,组合模式格式说明:传送源参数可以是图片框或窗体,也可以是窗体的Picture属性。(x1,y1)是目标区域某顶点坐标;(x2,y2)是要复制的矩形区域的某顶点坐标。w1,h1参数是目标区域的宽和高;w2,h2参数是要复制的矩形区域的宽与高。组合模式参数表示对传送像素和现有像素进行逻辑与、逻辑或和逻辑非等操作。若省略,则将现有的像素替换成传送的像素。若要实现图片的水平翻转,则(x2,y2)为复制区域的右上角坐标,要传送的矩形区域宽w2为负值;若要实现图片的垂直翻转,则(x2,y2)为复制区域的左下角坐标,要传送的矩形区域高h2为负值。,例3-24使用Paintpicture方法实现图片的水平和垂直翻转,DimwAsInteger,hAsIntegerPrivateSubForm_Load()Picture1.Picture=LoadPicture(App.Path+汽车.jpg)w=Picture1.Widthh=Picture1.HeightEndSubPrivateSubCommand1_Click()图片缩小一半并水平翻转Picture2.PaintPicturePicture1,0,0,w/2,h/2,w,0,-w,hEndSubPrivateSubCommand2_Click()图片缩小一半并垂直翻转Picture3.PaintPicturePicture1,0,0,w/2,h/2,0,h,w,-hEndSub,(2)TextWidth方法/TextHeight方法,返回按窗体或图片框的当前字体打印的文本字符串的宽度和高度。使用格式TextWidth(s)TextHeight(s)格式说明:参数s是一个字符串,该组方法返回s的宽度和高度,若s含有嵌入的回车返回符,则TextWidth方法将返回最长行的宽度。,例3-25,PrivateSubForm_Click()FontSize=18Print江南大学Print“宽度为:”&TextWidth(“江南大学”),_高度为:&TextHeight(江南大学)EndSub,多媒体处理,MMControl控件多媒体编程中最常使用的ActiveX控件,需要选择“MicrosoftMultimediaControl6.0”部件将此控件添加到工具箱中,MMControl控件常见属性,MMControl控件主要事件,(1)Done事件:在当Notify属性为T

温馨提示

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

评论

0/150

提交评论