电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 软件教学-> 系统工具
vb5实现窗口图像缩放、滚动技巧_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
----VisualBasic是Windows平台中最常用的应用软件开发语言,窗口图像缩放、滚动是图像处理、多媒体数据库等应用软件开发中的基本功能。本文将介绍如何用VB5.0实现地窗口图像缩放和滚动技巧,供读者在各种语言系统开发中参考。

----一、获取图像

----本文所介绍的图像缩放并没有对真正的图像进行缩放,而是复制一幅窗口图像的真实画面,对这个窗口图像附本进行局部缩放和滚动,获取窗口图像可使用Windows的API函数来实现。具体来说,实现窗口图像缩放、滚动需要用GetDeskTopWindow()函数获取桌面窗口句柄,再通过GetDC()函数转换为描述表句柄,则用BitBlt()函数把桌面图像复制到任意图形容器控件中,桌面图像复制完成后,再用ReleaseDC释放窗口描述表,各API函数的具体使用方法参见本文的例子程序。

----本文所用的API函数包含在WIN95/98的GDI32.DLL和USER32.DLL动态链接库中,在使用时可通过VB5.0的TEXTVIEWER复制到所开发的应用程序中。

----二、图像缩放

----图像缩放显示的基本原理就是把原图像的一部分缩放后再送入窗口的图形容器控件中,在VB中可用内部命令PaintPicture来进行,语法格式为:

PaintPicturePic,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图形控件容器中显示。

PrivateSubForm_Load()
DimFileNameAsString
FileName="C:\SAMP.BMP"
OpenFileNameForBinaryAs#1
Get#1,19,ImageWidth:Get#1,,ImageHeight
读取位图的宽度和高度
Close#1
DW=15*ImageWidth-ImageWin.Width
将像点转换为Twip(微点)
DH=15*ImageHeight-ImageWin.Height
ImageWin.Width=15*ImageWidth
ImageWin.Height=15*ImageHeight
AppImage.AutoRedraw=True
AppImage.Caption=FileName
改变Form窗标题
HScroll1.SmallChange=100
设置滚动最小步距
VScroll1.SmallChange=100
DX=ImageWin.Width:DY=ImageWin.Height
设置复制图像尺寸
SX=ImageWin.Width:SY=ImageWin.Height
AMP=1设置缩放比例为1
sWin=GetDesktopWindow()
获取桌面窗口句柄
sDC=GetDC(sWin)
转换为描述表句柄
hd=BitBlt(ImageWin.hdc,0,0,Image.Width,
Image.Height,sDC,0,0,&HCC0020)
hd=ReleaseDC(sWin,sDC)释放窗口描述表
AppImage.ImageWin=LoadPicture(FileName)
载入图像显示
EndSub

----3.在General对象的Declaration过程中声明本程序所使用的WIN95API函数和和过程,以及各事件程序所使用的全局变量等。

PrivateDeclareFunctionBitBltLib"gdi32"
(ByValhDestDCAsLong,ByValXAsLong,
ByValYAsLong,ByValnWidthAsLong,ByVal
nHeightAsLong,ByValhSrcDCAsLong,
ByValxSrcAsLong,ByValySrcAsLong,
ByValdwRopAsLong)AsLong
PrivateDeclareFunctionGetDCLib"user32"
(ByValhwndAsLong)AsLong
PrivateDeclareFunction
GetDesktopWindowLib"user32"()AsLong
PrivateDeclareFunctionReleaseDCLib"user32"
(ByValhwndAsLong,ByValhdcAsLong)AsLong
DimsWin,sDC,hd
DimImageWidthAsLong,ImageHeightAsLong
DimDX,DY,SX,SY,PX,PY,DW,DH,MX,MY,X0,Y0,AMP

----4.双击ImageWin对象,并在MouseMove事件和Mouse_down事件中输入下面程序,用于窗口图形的拖动滚动处理。

PrivateSubImageWin_MouseMove(ButtonAsInteger,
ShiftAsInteger,XAsSingle,YAsSingle)
If(ButtonAndvbLeftButton)>0Then
拖动鼠标滚动图像
MX=HScroll1.Value (X-X0)
MY=VScroll1.Value (Y-Y0)
IfMX>0AndMX<HScroll1.MaxThenHScroll1.Value=MX
IfMY>0AndMY<VScroll1.MaxThenVScroll1.Value=MY
EndIf
EndSub
PrivateSubImageWin_MouseDown(ButtonAsInteger,
ShiftAsInteger,XAsSingle,YAsSingle)
X0=X:Y0=Y拖动鼠标初值
EndSub

----5.在ZoomIn控件和ZoomOut的Click事件中输入下列程序,对窗口图像进行放大、缩小处理。

PrivateSubZoonIn_Click()
IfAMP<5ThenAMP=2*AMP
放大系数小于5,则放大图像
AppImage.ImageWin.PaintPictureImageWin.Image,
0,0,AMP*DX,AMP*DY,PX,PY,SX,SY
EndSub
PrivateSubZoomOut_Click()
AppImage.ImageWin.Cls
清除窗口图像
IfAMP>0.25ThenAMP=AMP/2
放大系数大于0.25,则缩小图像
AppImage.ImageWin.PaintPicture
ImageWin.Image,0,0,AMP*DX,AMP*DY,PX,PY,SX,SY
EndSub

----6.在HScroll控件和VScroll控件的Change事件中输入下面程序,对窗口图像进行滚动处理。

PrivateSubHScroll1_Change()
PX=HScroll1.Value*DW/HScroll1.Max
计算水平滚动位置
AppImage.ImageWin.PaintPictureImageWin.Image,
0,0,AMP*DX,AMP*DY,PX,PY,SX,SY
EndSub
PrivateSubVScroll1_Change()
PY=VScroll1.Value*DH/VScroll1.Max
计算垂直滚动位置
AppImage.ImageWin.PaintPictureImageWin.Image,
0,0,AMP*DX,AMP*DY,PX,PY,SX,SY
EndSub

----7.在ExitButton控件的Click事件中输入下面程序,用于结束程序、关闭窗口。

PrivateSubExitButton_Click()
End
EndSub

----五、应用说明

----窗口图像滚动是各种数据查询系统、多媒体图形数据库系统开发中的基本功能之一,本文用WindowsAPI函数实现了窗口图像缩放、滚动,该方法可适用于VisualC 等语言。本文全部程序均在WIN98环境中VisualBasic5.0下调试通过。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·减少ghost镜像文件体积_系统工具教程
·巧用ghost explorer隐藏文件_系统工具教程
·菜鸟入门:vb编程规约_visualbasic教程
·visualbasic串口通信程序设计_visualbasic教程
·用photoshop图层样式打造晶莹润泽的珍珠_photoshop教程
·巧妙修改虚拟机的bios信息_windows xp
·用pm 8.0实现ntfs到fat的无损转换_系统工具教程
·2004电脑垃圾清除新工具全攻略!_系统工具教程
·ghost使用不当导致数据丢失现象的解决办法_系统工具教程
·神出鬼没 揭开ghost 9的真面目_系统工具教程

最新文章
·用suhosin加强php脚本语言安全性_php技巧
·替代ghost 希捷官方免费磁盘备份工具_系统工具教程
·photoshop古铜色效果制作方法_photoshop教程
·昨日轻松重现!一键ghost轻松备份系统_系统工具教程
·用ghost几秒钟快速格式化120g大硬盘_系统工具教程
·磁盘整理工具vopt最新试用_系统工具教程
·隐藏在ghost系统背后可怕的陷阱_系统工具教程
·系统优化好助手 windows优化大师试用_系统工具教程
·手把手教您将ghost克隆玩得再专业一点_系统工具教程
·photoshop图像合成实例:女孩与孔雀_photoshop教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号