- 零基础学Visual Basic第2版
- 李俊民 赵东等编著
- 172字
- 2024-12-20 23:53:29
4.9 图像框
在程序界面中经常会放置一些图形图像来美化自己的界面。因此Visual Basic为用户提供了两个处理图形图像的控件,分别是图片框(PictureBox)和图像框(Image)。在工具箱中,图片框的图标为,图像框的图标为。
图像框控件用来显示图形,它可以说是图片框控件的一个缩写版,如果仅仅要显示一个图形可以选择此控件,因为该控件占用的内存很少。图像框控件最重要的属性有Picture和Stretch两个属性。
4.9.1 设置图像框中的图形
在图像框里显示图形文件,通常会用到Picture和Stretch两个属性。Picture属性用来给窗体、图片框、图像框添加图形,这些图形文件的类型可以是:位图文件(.BMP或.DIB)、图标文件(.ICO或.CUR)、图元文件(.WMF或.EMF)、JPEG文件(.JPG)和GIF文件(.GIF)。Picture属性可以在设计阶段通过属性窗口设置,也可以在运行阶段通过LoadPicture()函数设置。通过属性窗口设置的操作步骤如下。
(1)在窗体上画出一个图像框,并将其选中。
(2)在属性窗口中找到Picture属性并单击该属性条,最右侧会出现一个带有3个点的按钮。
(3)单击按钮,在打开的“加载图片”对话框中找到需要的图形文件即可。
Stretch属性是一个逻辑值属性,只能取True和False两种值。当Stretch设置为True时图形的大小会按照图像框的大小自动调整,而如果设置为False(默认值),图像框会根据图形的大小而变化。如果希望加载进来的图形完整地显示在已经规定好尺寸的图像框中,就应该设置Stretch属性为True。
4.9.2 使用LoadPicture函数设置图形
要在运行阶段给图像框设置图形,必须使用LoadPicture函数,LoadPicture函数的格式为:
图像框.Picture=LoadPicture("文件名")
其中,“文件名”是带有完整路径和扩展名的文件名。例如:
Imag1.Picture = LoadPicture("c:\vbtest\pic\111.jpg")
使用LoadPicture函数不仅可以在运行阶段给图像框、图片框、窗体添加或改变图形文件,也可以删除其中的图形文件,例如下面的语句删除了Image1中的图形:
Imag1.Picture = LoadPicture()
在LoadPicture函数后面的括号里什么也不写就等于删除了对象中的图形文件。该函数除了给Picture属性设置值以外,也可以给其他图形属性设置值。例如,可以给窗体设置图标,语句可以写为:
Form1.Icon = LoadPicture("c:\ vbtest \icon\main.ico")
4.9.3 相对路径—App.Path
上一小节讲述的LoadPicture函数中带有盘符的路径在程序设计语言里被称为绝对路径,在编程时写绝对路径是一个很不好的习惯,因为开发出来的应用程序会被安装到千万台不同的计算机上,这时谁也保证不了这些计算机的C盘下会有什么程序使用到的那个图形文件。因为上述原因,通常在程序里都要使用相对路径。用法如下:
Imag1.Picture = LoadPicture(App.Path & " \111.jpg")
其中,App.Path会自动获得工程文件所在的路径,程序中其他资源的位置可以通过参照这个路径获得。当然,前提是所有资源应该有条理地和工程文件放到一起。例如,假设工程文件“工程1”被保存到了“D:\vb试验”路径下,那么程序运行后App.Path的值就是字符串“D:\vb试验”,而字符串连接表达式App.Path & " \111.jpg"的值就会是“D:\vb试验\111.jpg”。
4.9.4 设置鼠标指针形状
在使用Windows应用程序时,经常会看到不同的鼠标指针形状,例如,有箭头、十字、小工字、双向箭头等等。这些指针形状提示了用户下一步应该做什么样的操作。试想一下如果用户想要通过拖拽窗口的边界改变窗口的大小时,鼠标指针的形状怎么也不变成双箭头时的情景,用户肯定会认为不能改变这个窗口的尺寸,从而放弃这个操作。因此,在应用程序中设置好指针形状是一件很必要的事情。下面讲述设置指针形状时用到的两个属性MousePointer和MouseIcon。
MousePointer属性用来设置鼠标移动到某对象的一个特定部分时鼠标指针的形状。例如,假设将一个图像框控件的MousePointer属性设置为2-Cross后,当将鼠标移动到该图像框上时鼠标指针形状就会变为十字形。其具体值的含义可通过在属性窗口中单击MousePointer属性,然后按键盘上的F1键查看帮助文档。
MouseIcon属性主要用来设置自定义的鼠标指针的图标。如果希望鼠标移动到某对象上的时候其指针形状变为自己设定的图形,就可以设置该属性,但是前提是必须将MousePointer属性设置为99才可以。
4.9.5 应用案例—看图学英语
图像框与其他大部分控件一样也有单击、双击等事件。下面的实例使用了其单击事件。
【实例4.12】编写一个看图学英语的程序。实现目标为:
❑当鼠标移动到图片上的时候,鼠标形状就会从箭头变成自定义的手形,离开图像时又恢复成箭头。
❑当用鼠标单击图片时,相应的英语单词就会显示到窗体相应位置上。
界面设计如图4.24所示。
表4.15是本例中各对象的属性设置,在此要注意6个图像框控件的MousePointer和MouseIcon属性的设置。
图4.24 实例4.12界面设计
表4.15 实例4.12对象的属性设置
编写事件过程如下。
01 Private Sub Form_Load() 02 imgClock.Picture = LoadPicture(App.Path & "\pic\clock.jpg") 03 imgApple.Picture = LoadPicture(App.Path & "\pic\apple.jpg") 04 imgHat.Picture = LoadPicture(App.Path & "\pic\hat.jpg") 05 imgBasketball.Picture = LoadPicture(App.Path & "\pic\basketball.jpg") 06 imgPen.Picture = LoadPicture(App.Path & "\pic\pen.jpg") 07 imgDog.Picture = LoadPicture(App.Path & "\pic\dog.jpg") 08 End Sub 09 10 Private Sub imgApple_Click() 11 lblWord.Caption = "apple" 12 End Sub 13 14 Private Sub imgBasketball_Click() 15 lblWord.Caption = "basketball" 16 End Sub 17 18 Private Sub imgClock_Click() 19 lblWord.Caption = "clock" 20 End Sub 21 22 Private Sub imgDog_Click() 23 lblWord.Caption = "dog" 24 End Sub 25 26 Private Sub imgHat_Click() 27 lblWord.Caption = "hat" 28 End Sub 29 30 Private Sub imgPen_Click() 31 lblWord.Caption = "pen" 32 End Sub
【代码说明】代码第02~07行使用LoadPicture方法来加载指定地址的图片。其中的App.Path自动获取工程所在的路径。代码第10~32行不过是显示每个图片单击后的效果。
注意
在运行程序之前应当先保存工程文件,否则App.Path的路径是错误的。而且,还需要注意的是一定要在设计程序阶段将图形文件找好,并放到正确的路径下。本书将所有图形文件都放到了和工程文件在同一个路径下的“pic”文件夹中。
【运行效果】最后运行结果如图4.25所示。
图4.25 实例4.12的运行结果