利用VB设计图像的显示效果
2008-04-09 04:39:32来源:互联网 阅读 ()
- 如何利用VB设计图像的显示效果是本文讨论的内容。
首先我们来了解一下图像的显示效果:一幅图像可以以这样或那样的方式显示在屏幕上的某一指定区域,如:可以从左到右逐渐显示出来,也可以从中间向两边(即开门方式)逐渐显示,还可以像百叶窗那样显示等等,这些都是显示效果。采用这样的显示效果可给图像的显示增加动感,从而增强界面的可观性?
要使图像显示具有一定的效果,需先将图像分割成若干块,然后按照所需效果利用程序控制图像块的显示次序及时间间隔。例如:要设计从左到右的显示效果,可把图像分割成若干列块,然后在程序中先显示最左边的一块,之后,第二块、第三块……,直到最后一块。为了分割图像,可使用VB中的图片剪裁控制,它可将图像分割成若干行(Col)、列(Row)。为使图像块与块之间的显示具有一定的时间间隔,以达到动态效果,可使用VB中的计时器。另外, 要显示图像块,需要在界面上有相应的控制来放置它们,VB中的图片框和图像控制可用来显示图像,但它们只能显示出某一块,也就是在装入下一个图像块时,当前显示的图像块被覆盖。为了能依次显示出所有的块,可使用VB中的网格控制,把网格设计成同样的行数和列数 ,把网格单元(Cell)的大小设计成同图像块一样,在对应的网格单元中装入相应的图像块即可。
利用图像控制工具在窗体上创建一个Image,用鼠标双击其属性窗口中的Picture项以装入要显示的图像文件。然后记住其宽度和高度,其单位默认为Twips(1twip=1/15Pixel),之后删除此Image。再用图片剪裁控制工具在窗体上建立一个PictureClip,双击其属性窗口中的Picture项可装入要分割的图像,然后将其属性Rows和Cols设置为对应的要分割的行、列数。在确定要分割的行、列数时应注意:要使行、列数能被图像的高度、宽度对应整除,否则会在图像块与块之间显示缝隙。商数不小于15(即一个Pixel大小),因为网格的最小单位为1个 el。
利用网格控制工具在窗体适当位置建立一个Grid,将其属性窗口中的Width和Height属性设置为对应的图像宽度和高度,Rows和Cols属性设置为对应的行、列数,并将其FixedCols、FixedRows、ScrollBars属性设置为0,Enabled、Gridlines、HighLight属性设置为False。
利用计时器控制工具在窗体上建立一个Timer,将其Interval(间隔)属性设置为适当的值, 其单位为毫秒。
在程序中,利用属性设置语句把网格单元的大小设置为图像块大小,即网格单元宽度=图像宽度/列数,网格单元高度=图像高度/行数。
在计时器过程中编写图像块的显示程序。
假设一个图像宽度为5280Twips,高度为3600Twips。
窗体及其中各控制的属性设置:
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
窗体的通用声明部分:
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
窗体及其中各控制的属性设置:同1。
窗体的通用声明部分:同1。
过程代码:
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
窗体及其中各控制的属性设置:同1。
窗体的通用声明部分:同1。
过程代码:
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
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:VB访问数据库的方案比较
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash