电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 图形图象-> PHOTOSHOP教程
vb5.0中基于桌面的屏幕技巧_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
->----WINDOWS95的桌面是用户的一个主要工作场所,如果你能使这个桌面移动起来或者发生其它变化,将是一种别具一格屏幕特技效果,而实际上目前具有类似效果的程序并不少见,比如MicrosoftPLUS!中提供的一种屏幕保护程序,下面介绍在VB5.0中实现桌面变化特技的基本原理和具体操作过程。

----一、桌面变化的实质:这种编程效果的奥妙在于,它不是使真正的WINDOWS95桌面发生了变化,而是启动了一个具有黑色背景的且运行在最大化模式下的应用程序,在这个程序中复制了一张和桌面完全一样的图像,覆盖在整个桌面之上,通过一些特殊的操作使这幅图像在黑色的背景下发生扭曲、移动等动作,当结束此程序时,自然恢复到原来的桌面状态,整个过程连贯进行,即可以给人一种桌面发生变化的假象。

----二、基本实现原理:首先必须通过有关的WINDOWSAPI函数,取得桌面窗口的句柄,然后把此桌面图像放入与屏幕尺寸相同的图形框或其它图形容器控件之中,然后以此为图像源,利用其它图形控件或有关的图像处理函数,灵活地控制这幅图像,使之产生特殊的屏幕效果。编程时需要使用下面几个API函数:

----BitBlt:一个较常见的图像处理函数,完成图像的复制工作;

----GetDC:获得窗口的描述表句柄;

----GetDesktopWindow:返回桌面窗口句柄;

----ReleaseDC:释放窗口描述表;

----具体的参数格式及使用方法见后面的程序代码。

----这里还需要使用一个VB内部函数PaintPicture,语法格式:

PaintPicturePic,destX,
destY,destWidth,destHeight,
scrX,scrY,scrWidth,scrHeight
其中Pic:为图片对象,
如图形框Picture等;
destX,destY:目标图像位置;
destWidth,destHeight:目标图像尺寸;
scrX,scrY:原图像的裁剪坐标;
scrWidth,scrHeight:原图像的裁剪尺寸;

----此命令的功能就是把一个源图像资源任意复制到指定的区域,其功能相当于API函数的BitBlt,但使用更为简单。

----其中有一点需要说明,在VB通常有两种图形控件可以使用,即图形框PICTURE及图像框IMAGE,其中PICTURE具有与窗体通用的Hdc句柄属性,所以可方便的进行图像复制,而IMAGE最大的优点是具有Stretch伸缩性,可方便的进行图像的缩放处理,所以在编程时会涉及到把图像从图形框PICTURE复制到图像框IMAGE的动作,这里需要澄清图形框PICTURE的两个相似的属性即PICTURE及IMAGE,比如一般可用下面的命令在图形框中装入图像:

----Picture1.picture=Loadpicture("c:\windows\setup.bmp")

----此时可用下面的命令把图像复制到图像框中:

----SetImage1.picture=Picture1.Picture

----而利用BitBlt命令复制到Picture中的图像则不是它的Picture属性,使用上述的复制命令将无法得到真实的图像,而必须使用其Image属性,AutoRedraw属性可以引起Image改变,Image是指向位图的句柄,当AutoRedraw为True时,对象的hDC属性成为指向设备描述体的句柄,复制命令为:

----SetImage1.Picture=Picture1.Image

----同样,在针对上述的Picture两种不同的装入图像方法,使用图像重写命令PaintPicture也需要两种不同的方法:

----PaintPicturePicture1.Image,x,y,Width,Height

----PaintPicturePicture1.Picture,x,y,Width,Height

----三、一个演示程序的编制过程

----创建一个新的工程,在窗体Form1上放置一个图形框Picture1和一个图像框Image1,置Form1及Picture1的AutoReadraw属性为True,置form1的BorderStyle属性为None,背景BackColor为黑色,如果想要任务条安全地参加特技运动,最好使程序运行在最大化模式,即置Form1的WIndowState属性为Maximized。然后进行API函数说明,可通过APIViewer直接获得,把其放入一个BAS模块文件中,也可以直接放在窗体Form1代码文件的General段中,但此时在函数前面必须加上Private关键字,详见下面的API说明,最后文后程序代码填入有关的事件之中。此演示程序运行之后可实现下面的桌面特技效果,任何时候单击图形框可强制退出程序:

----1.桌面逐渐缩小:图形的放大缩小使用Image控件最为方便,实现此特技的关键处就是需要把桌面图形传递到图像框IMAGE之中,然后置Stretch属性为真,逐渐修改IMAGE的尺寸即可使桌面放大或缩小;

----2.随机位置显示桌面:此效果主要使用PaintPicture命令,通过随机修改目标图形的起始坐标,把桌面图像写到屏幕的随机位置;

----3.桌面的横向或纵向滚动:此效果只需要把桌面图形写到一个图形框Picture之中,然后通过修改此图形框的起始坐标,即可以使桌面在屏幕上发生平滑滚动;

----4.桌面上显示文字或图形:此效果主要使用VB的绘图方法及Print命令,在VB中窗体或图形框均支持VB绘图方法,下面的程序中先画两个重叠的实心矩形,然后在其上面显示文字,最终形成带有背景和边框的字符串;

----5.桌面变暗:桌面变暗的效果在你关闭WINDOWS95时即可见到,在VB中要使图形亮度降低并不件容易的事,需要多个API函数及复杂的编程,但可通过一种颜色抖动的方法解决,即在桌面图形上均匀的写上黑色象素,可使图形产生明显的降低亮度的感觉。

----由于这个演示程序是连续演示上述五种特技,其效果显得不太理想,如果你单独使用其中的一种处理方法,即在正常的桌面状态下直接使桌面变化,将更为理想。以上给出了用VB对WINDOWS95桌面进行特殊操作的原理和方法,实际上利用这个原理加入VB中灵活的图像处理手段,可以实现对桌面更为复杂的其它控制效果,比如可制作完整的屏幕保护程序,有兴趣的读者可以一试,以上程序在WINDOWS95系统、VB5.0环境下调试通过。

----附源程序清单:

----API函数引用

PrivateDeclareFunctionBitBlt
Lib"gdi32"(ByValhDestDCAsLong,
ByValXAsLong,ByValYAs
Long,ByValnWidthAsLong,
ByValnHeightAsLong,ByVal
hSrcDCAsLong,ByValxSrcAsLong,
ByValySrcAsLong,ByVal
dwRopAsLong)AsLong
PrivateDeclareFunctionGetDC
Lib"user32"(ByValhwndAsLong)AsLong
PrivateDeclareFunctionGet
DesktopWindowLib"user32"()AsLong
PrivateDeclareFunctionReleaseDC
Lib"user32"(ByValhwndAsLong,
ByValhdcAsLong)AsLong

变量说明
DimsWnd,sDC,hd
直接演示特技效果
PrivateSubForm_Load()
置窗口背景为黑色无边框
Form1.BackColor=0
Form1.BorderStyle=0
修改窗口尺寸与屏幕相同
Form1.AutoRedraw=True
Form1.Width=Screen.Width
Form1.Height=Screen.Height
Form1.Top=0
Form1.Left=0
修改PICTURE尺寸与屏幕相同
Picture1.Width=Screen.Width
Picture1.Height=Screen.Height
Picture1.Top=0
Picture1.Left=0
获得桌面图像句柄
sWnd=GetDesktopWindow()
sDC=GetDC(sWnd)
hd=BitBlt(Picture1.hdc,0,0,Form1.
Width,Form1.Height,sDC,0,0,&HCC0020)
hd=ReleaseDC(sWnd,sDC)
Picture1.Visible=False
Form1.Show
修改IMAGE尺寸与屏幕相同
Image1.Stretch=True
Image1.Picture=Picture1.Image
Image1.Width=Screen.Width
Image1.Height=Screen.Height
Image1.Top=0
Image1.Left=0
桌面逐渐缩小
Fori=0ToScreen.Height/35
Image1.Visible=False
Image1.Top=15*i
Image1.Left=15*i
Image1.Width=Screen.Width-2*Image1.Left
Image1.Height=Screen.Height-2*Image1.Top
Image1.Visible=True
DoEvents
Nexti
Image1.Visible=False
随机位置显示桌面
Fori=0To20
DimllAsInteger
DimttAsInteger
ll=Rnd(1)*Screen.Width-Screen.Width/2
tt=Rnd(1)*Screen.Height-Screen.Height/2
Form1.PaintPicturePicture1.
Image,ll,tt,Screen.Width,Screen.Height
DoEvents
Nexti
显示PICTURE并清屏幕
Picture1.Visible=True
Form1.Cls

横向移动
Fori=0ToScreen.Width*2/5
Picture1.Left=Picture1.Left 5
IfPicture1.Left>Screen.WidthThen
Picture1.Left=-Screen.Width
EndIf
DoEvents
Nexti
纵向移动
Fori=0ToScreen.Height*2/5
Picture1.Top=Picture1.Top 5
IfPicture1.Top>Screen.HeightThen
Picture1.Top=-Screen.Height
EndIf
DoEvents
Nexti
桌面上显示文字
Fori=0To50
WithPicture1
.ScaleMode=3以象素为单位
.FontTransparent=True
.Font.Size=Rnd*30 10
.Font.Italic=True
.ForeColor=RGB(Rnd*256,Rnd*256,Rnd*256)
.FontName=Screen.Fonts(Rnd*7 14)
EndWith
hh=Picture1.TextHeight("OKDESKTOP演示")
ww=Picture1.TextWidth("OKDESKTOP演示")
X=Rnd*(Picture1.ScaleWidth-ww)
Y=Rnd*(Picture1.ScaleHeight-hh)
Picture1.Line(X-2,Y-2)-(X ww 2,
Y hh 2),RGB(Rnd*256,Rnd*256,Rnd*256),BF
Picture1.Line(X,Y)-(X ww,Y hh),
RGB(Rnd*256,Rnd*256,Rnd*256),BF
Picture1.CurrentX=X
Picture1.CurrentY=Y
Picture1.Print"OKDESKTOP演示"
DoEvents
Nexti
桌面变暗
Form1.Picture1.ScaleMode=3以象素为单位
Forj=0ToPicture1.ScaleHeight/2
Picture1.Line(0,2*j)-(Picture1.ScaleWidth,2*j),RGB(0,0,0)
Nextj
EndSub
强制退出程序
PrivateSubPicture1_Click()
End
EndSub->
->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·粗略看了下领智4.0 RC的模板标签 有感
·Vista之家有奖征名进行中,现金+进口礼物
·站长心中永远的痛
·黑客,网络冒牌执法官!
·一个新人站长的第一次——卖站
·企业即时通讯市场潜力巨大腾讯隔河望金
·我在一家安全网站的工作经历
·莫让培训影响了你的视线
·一位因女友离去而痛苦中的站长
·您是否患有电脑依赖症?

最新文章
·中国网络股周二在纳市整体上涨
·北京全市网吧达1400家 年均收入过百万元
·好莱坞罢工编剧欲绕过影视公司自建网络公司
·IBM在京成立保险行业解决方案演示中心
·XP SP3公测在即 正式版本明年上半年发布
·联想退出数码相机业务
·陈绍鹏:联想公益创投计划的另类思考
·AMD后年推8内核芯片
·2007“中国芯”十佳揭晓
·成都用户分享联想奥运计划


 
 


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

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

版权所有 西部数码(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号