Visual Basic是Windows平台中最常用的应用软件开发语言,窗口图像缩放、滚动是图像处理、多媒体数据库等应用软件开发中的基本功能。本文将介绍如何用
vb5.0实现地窗口图像缩放和滚动技巧,供读者在各种语言系统开发中参考。
一、获取图像
本文所介绍的图像缩放并没有对真正的图像进行缩放,而是复制一幅窗口图像的真实画面,对这个窗口图像附本进行局部缩放和滚动,获取窗口图像可使用Windows的API函数来实现。具体来说,实现窗口图像缩放、滚动需要用GetDeskTopWindow()函数获取桌面窗口句柄,再通过GetDC()函数转换为描述表句柄,则用BitBlt()函数把桌面图像复制到任意图形容器控件中,桌面图像复制完成后,再用ReleaseDC释放窗口描述表,各API函数的具体使用方法参见本文的例子
程序。
本文所用的API函数包含在WIN95/98的GDI32.DLL和USER32.DLL动态
链接库中,在使用时可通过VB5.0的TExt VIEWER复制到所开发的应用
程序中。
二、图像缩放
图像缩放显示的基本原理就是把原图像的一部分缩放后再送入窗口的图形容器控件中,在VB中可用内部命令PaintPicture来进行,语法格式为:
PaintPicture Pic,DestX,DestY,DestWidth,DestHeight,ScrX,ScrY,ScrWidth,ScrHeight
其中,Pic为
图片对象,如图形控件对象等;
DestX,DestY为目标图像起始坐标;
DestWidth,DestHeight为目标图像幅面尺寸;
ScrX,ScrY为源图像起始坐标;
ScrWidth,ScrHeight为源图像剪裁尺寸。
该命令就是把一个源图像资源任意复制到指定的区域,其功能相当于API函数的BitBlt,但使用更简单,若复制时改变源图像的ScrWidth,ScrHeight或目标图像的DestWidth,DestHeight可使复制后的图像尺寸发生变化,实现窗口图像的缩放显示。若ScrWidth,ScrHeight或DestWidth,DestHeight为负值还可实现窗口图像的水平、垂直反转显示。因此,在把源图像送入目标图形容器控件时,若改变源图像的幅面尺寸,即可实现图像的缩放处理。
三、图像滚动
当载入图像尺寸大于图形控件窗口时,为了便于浏览、选取必须对窗口图像滚动操作。窗口图像滚动可通过水平滚动控件HScroll和垂直滚动控件VScroll来实现,通过控件的改变值HScroll.Value和VScroll.Value来控制PaintPicture命令中的源图像坐标ScrX和ScrY,即可实现窗口图像的滚动操作。
四、图像缩放、滚动实现
本文可对非压缩BMP位图进行缩放、滚动,非压缩BMP位图的宽度和高度在文件开始11H后的8个字节。若读者需要对其它图像格式(如jpg,TIF等)进行缩放操作,可根据本文介绍的方法对找出相应的图像高度和宽度即可,具体实现步骤如下:
1.执行“File-->Projects”创建一新项目APPIMG.VBP,在FORM窗口中创建PictureBox、CommandButton、HScroll、VScroll等对象,调整各自位置,并设置各对象的属性如下:
Form: Name=AppImage,ScaleMode=1
PictureBox: Name=ImageWin,Appearance=1-3D,ScaleMode=3
CommandButton: Name=ZoomIn,Caption="ZoomIn"
CommandButton: Name=ZoomOut,Caption="ZoomOut"
CommandButton: Name=ExitButton,Caption="Exit"
2.双击FORM窗口,并将下面程序输入到Form对象的Load事件中。该
程序用于读取图像的宽度和高度,初始化常用参数,载入窗口图像,并将图像复制到FORM窗口的PictureBox图形控件容器中显示。
Private Sub Form_Load()
Dim FileName As String
&nbs