利用VB设计图像的显示效果

2016-02-19 14:53 9 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的利用VB设计图像的显示效果,过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - 编程语言 】

  图像显示是程序设计中必不可少的内容。我们可使用VB中的图片框控制或图像控制进行图像显示的操作,但它的显示属于直接显示,不像一些多媒体制作系统(如Authorware)那样对图像的显示提供多种效果。具有一定效果的图像显示能给用户以新颖、难忘的感觉。 如何利用VB设计图像的显示效果是本文讨论的内容。

  首先我们来了解一下图像的显示效果:一幅图像可以以这样或那样的方式显示在屏幕上的某一指定区域,如:可以从左到右逐渐显示出来,也可以从中间向两边(即开门方式)逐渐显示,还可以像百叶窗那样显示等等,这些都是显示效果。采用这样的显示效果可给图像的显示增加动感,从而增强界面的可观性?

一、分析

  要使图像显示具有一定的效果,需先将图像分割成若干块,然后按照所需效果利用程序控制图像块的显示次序及时间间隔。例如:要设计从左到右的显示效果,可把图像分割成若干列块,然后在程序中先显示最左边的一块,之后,第二块、第三块,直到最后一块。为了分割图像,可使用VB中的图片剪裁控制,它可将图像分割成若干行(Col)、列(Row)。为使图像块与块之间的显示具有一定的时间间隔,以达到动态效果,可使用VB中的计时器。另外, 要显示图像块,需要在界面上有相应的控制来放置它们,VB中的图片框和图像控制可用来显示图像,但它们只能显示出某一块,也就是在装入下一个图像块时,当前显示的图像块被覆盖。为了能依次显示出所有的块,可使用VB中的网格控制,把网格设计成同样的行数和列数 ,把网格单元(Cell)的大小设计成同图像块一样,在对应的网格单元中装入相应的图像块即可。

二、设计步骤 1、确定图像大小及要分割的行、列数

  利用图像控制工具在窗体上创建一个Image,用鼠标双击其属性窗口中的Picture项以装入要显示的图像文件。然后记住其宽度和高度,其单位默认为Twips(1twip=1/15Pixel),之后删除此Image。再用图片剪裁控制工具在窗体上建立一个PictureClip,双击其属性窗口中的Picture项可装入要分割的图像,然后将其属性Rows和Cols设置为对应的要分割的行、列数。在确定要分割的行、列数时应注意:要使行、列数能被图像的高度、宽度对应整除,否则会在图像块与块之间显示缝隙。商数不小于15(即一个Pixel大小),因为网格的最小单位为1个 el。 

2、设置网格大小及行、列数

  利用网格控制工具在窗体适当位置建立一个Grid,将其属性窗口中的Width和Height属性设置为对应的图像宽度和高度,Rows和Cols属性设置为对应的行、列数,并将其FixedCols、FixedRows、ScrollBars属性设置为0,Enabled、Gridlines、HighLight属性设置为False。 

3、设置计时器时间间隔

  利用计时器控制工具在窗体上建立一个Timer,将其Interval(间隔)属性设置为适当的值, 其单位为毫秒。 

4、编程设置网格单元大小;编制图像块的显示程序

  在程序中,利用属性设置语句把网格单元的大小设置为图像块大小,即网格单元宽度=图像宽度/列数,网格单元高度=图像高度/行数。

  在计时器过程中编写图像块的显示程序。 

三、实例

  假设一个图像宽度为5280Twips,高度为3600Twips。

1、从左到右方式

  窗体及其中各控制的属性设置:

  

Begin Form Display Caption="图像显示" Height=4530 Left=1845 Top=975 Width=6120 Begin PictureClip pict Cols=88 Rows=1 End Begin Grid Grid1 BorderStyle=1 Cols=88 Enabed=False FixedCols=0 FixedRows=0 GridLines=False Height=3600 HighLight=False Left=240 Rows=1 ScrollBars=0 Top=240 Width=5280 End Begin Timer Timer1 Enabled=False Interval=30 End End 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  窗体的通用声明部分:

  

Dim bc As Integer 图像块控制变量过程代码: Sub Form__Load() Dim i As Integer bc=0 Gridl.RowHeight(0)=3600 网格单元的高度 For i=0 To 87 Grid1.ColWidth(i)=5280/88 网格单元的宽度 Next i Timerl.Enabled=True 启动计时器 End Sub Sub Timer1_timer() If bc=88 Then Timer1.Enabled=False 停止计时 Else Grid1.Col=bc Grid1.Picture=Pict.GraphicCell(bc) 

  在网格单元中装入对应的图像块

  

bc=bc+1 End If End Sub 

2、开门方式

  窗体及其中各控制的属性设置:同1。

  窗体的通用声明部分:同1。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  过程代码:

  

Sub Form__Load() Dim i As Integer bc=43 Grid1.RowHeight(0)=3600 For i=0 To 87 Grid1.Co1Width(i)=5280/88 Next i Timer1.Enabled=True End Sub Sub Timerl_Timer() Grid1.Col=bc Grid1.Picture=Pict.GraphicCell(bc) Grid1.Col=87-bc Grid1.Picture=Pict.GraphicCell(87-bc) bc=bc-1 if bc< 0 Then Timerl.Enabled=False End Sub 

3、水平百叶窗方式

  窗体及其中各控制的属性设置:同1。

  窗体的通用声明部分:同1。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  过程代码:

  

Sub Form__Load() Dim i As Integer bc=0 Grid1.RowHeight(0)=3600 For i=0 To 87 Grid1.Co1Width(i)=5280/88 Next i Timer1.Enabled=True End Sub Sub Timer1__Timer() Dim i As Integer For i =0 to 10 Grid1.Col=8 * i+bc Grid1.Picture=Pict.GraphicCe11(8 * i+bc) Next i bc=bc+1 If bc=8 Then Timer1.Enabled=False End Sub 

  以上介绍了图像的三种显示效果。类似地,还可设计出其它一些显示效果,如:从右到左、从上到下、从下到上、关门方式、垂直百叶窗方式、相机光圈收缩方式、相机光圈开放方式等。

  以上程序在中文Windows3.2、Visual Basic 3.0专业版上调试通过。

来源:http://www.tulaoshi.com/n/20160219/1608263.html

延伸阅读
用Authorware开发多媒体作品,自然不能少了图片的显示。通常我们是用框架图标,把要显示的图片依次导入。这样做非常麻烦,每一幅图片要依次导入,逐个设置显示方式,这且不说,万一下次要显示不同的图片时,还得重新导入、设置,非常烦琐。那么,能不能让Authorware显示指定文件夹里的图片呢?这样,就用不着每次都要导入了,只要指定图片所在...
在多媒体程序设计中,为了美化显示屏幕,增加画面的动感,常常要用天各种图像显示特技。图像的切换技术能明显美化画面。用VisualBasic编制这类程序时,由于VB自身没有这种切换功能,因此需要利用第三方控件或调用WindowsAPI函数BitBlt来实现这种功能。本文介绍用BitBlt函数实现画面的各种切换方法,供大家参考。 假设有5个图像文件(Picture...
在图像处理中,恐怕大家最熟悉的就是对于图像的亮度和对比度调整了。 前面一定也有很多人写过这样的文章了,但是想把我的这个系列作一个完整的小结,我就再罗嗦一番了。 还是以24位色图像为例子,每种色彩都可以用0-255,一共256种深度来表示。如果我们把它画在一个二维坐标上,正好是一条直线。 比如我们将像素的色...
屏幕保护程序可以保护显示屏不被损坏,同时节约能源。作为屏幕保护程序,应该具有如下特性: 1)屏幕保护程序运行时,鼠标光标被自动隐藏,在程序结束时,光标显示。2)当单击、移动鼠标或按下键盘时,屏幕保护结束,回到正常操作状态。为了实现这些特性,在编写VB应用程序时,可以采用如下方法: 1、改变窗体属性通常VB应用程序的窗体都...
'*ModuleName:Start_Module '*ModuleFilename:Start.bas '********************************************************* '*Comments:Show/Hidethestartbutton '******************************************************** PrivateDeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVallpClassN...

经验教程

486

收藏

37
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部