说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

平铺贴图背景 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
平铺贴图背景 -VB资料
作者:吴斌

为VB窗口增添平铺贴图背景

  “平铺贴图”是Windows壁纸一种经常使用的形式。只要在Windows桌面设置程序中,选择一个Windows自带的图案,或者选择一个自己制作的位图文件并选定“平铺”选项,系统就会将你选择的图案或位图有规则地从左到右、从上到下铺满整个屏幕。其实,通过调用API函数BitBlt,便可轻松自如地为VB应用程序的窗口制作平铺贴图背景。

  BitBlt函数的作用是将位图从一个设备描述表拷贝到另一个与之兼容的设备描述表,它的语法是:BitBlt% (ByVal hDestDC%, ByVal X%, ByVal Y%, ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal XSrc%, ByVal YSrc%, ByVal dwRop&)。其中,参数hDestDC指定目标设备描述表;X和Y指定目标设备描述表中目标矩形左上角的逻辑坐标点;nWidth和nHeight定义被拷贝的矩形图像的宽度和高度;hSrcDC指定目标设备描述表;XSrc和YSrc指定源设备描述表中源矩形左上角的逻辑坐标点;dwRop定义拷贝过程中使用的光栅操作。VB中的Form和PictureBox对象,都有各自相应的设备描述表用于存放它们显示的位图,这些设备描述表可以通过hDC属性存取。由此,我们可以总结出平铺贴图的实现方法:首先,将贴图图案载入一个PictureBox控件的设备描述表,然后,使用BitBlt函数将该设备描述表中的位图重复复制到同一设备描述表中,在复制过程中,通过改变BitBlt函数的X和Y参数控制复制的位置,使位图从左至右从上到下无缝排列,直到设备描述表中的位图尺寸与显示屏幕大小相同为止,最后,将该位图装入Form中显示,就可使该Form具有平铺贴图背景了。下面让我们使用该方法来完成一个实例。

  新建一个VB项目,在缺省窗体Form1中加入一个PictureBox控件Picture1,插入一个模块Module1,在其中加入如下声明语句:

  Declare Function BitBlt Lib "GDI" (ByVal hDestDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal XSrc As Integer, ByVal YSrc As Integer, ByVal dwRop As Long) AsInteger

  Public Const SRCCOPY = &HCC0020

  在项目中加入下列代码:
  Private Sub Form—Load()
   Dim hDCPic As Long
   Dim XPos As Integer
   Dim YPos As Integer
   Dim Ret As Integer
   Dim HeightMax As Integer
   Dim WidthMax As Integer
   Dim WidthPic As Integer
   Dim HeightPic As Integer

  '将位图载入Picture1的设备描述表
   Picture1.ScaleMode = 3
   Picture1.Visible = False
   Picture1.AutoSize = True
   Picture1.AutoRedraw = True

  '在此选择贴图的图案文件
   Picture1.Picture = LoadPicture("tile.bmp")

  '初始化变量
   HeightMax = Screen.Height \ Screen.TwipsPerPixelY
   WidthMax = Screen.Width \ Screen.TwipsPerPixelX
   WidthPic = Picture1.ScaleWidth
   HeightPic = Picture1.ScaleHeight

  '初始化Picture1的设备描述表以接受平铺贴图
   Picture1.AutoSize = False
   Picture1.Height = Screen.Height
   Picture1.Width = Screen.Width
   hDCPic = Picture1.hDC

  '水平拷贝位图生成平铺贴图的第一行
   For XPos = 0 To WidthMax Step WidthPic
     Ret = BitBlt(hDCPic, XPos, 0, WidthPic, HeightPic, hDCPic, 0, 0, SRCCOPY)
   Next

  '垂直拷贝已生成的第一行直至生成整个平铺贴图
   For YPos = HeightPic To HeightMax Step HeightPic
     Ret = BitBlt(hDCPic, 0, YPos, WidthMax, HeightPic, hDCPic, 0, 0, SRCCOPY)
   Next

  '将Picture1中的位图装入Form显示,然后清除Picture1中的位图
   Me.Picture = Picture1.Image
   Picture1.Picture = LoadPicture("")
   Picture1.AutoRedraw = False

  End Sub

 按F5运行,Form1的窗口内就出现了一个平铺贴图背景。
用VB开发CAI软件的小经验 用VB开发分布式应用 用VB切换三个特殊键 用VB生成EXE文件后,如何在后面加上参数?这个参数怎样传给VB 用VB实现动态显示操作进度程序 用VB实现双向循环链表 用VB实现用户登录密码的修改 用VB与MS-Draw开发通用作图软件 用VB制作TopMost类型窗口 用VB制作Windows风格安装盘 用Visual Basic 6创建基于MTS的商务组件 用Visual Basic实现Windows的重启动 VB用Windows管理技术做你的应用程序 VB用程序给标识字段(ID)赋值的一种简单实现方法 VB用自己的'PROGRAM'测试自己的电脑 有 BitMap 之Menu -VB资料 运行其他程序,并等待执行完毕 -VB资料 再谈VB程序的加密 在 VB 程序中如何设定 Mouse 光标的位置? 在ActiveX DLL工程中慎用App对象-VB资料 在ActiveX控件工程中设置DataField属性-VB资料 在VB中异步执行程序 在VB编程中有效地组织和利用资源 在VB应用程序中巧用DLL 在VB应用程序中使用INI文件的一点体会 在VB中操纵OLE服务器应用程序 在VB中改变显示器的分辨率 在VB中获取和修改计算机名字 在vb中没有指针,怎样才能将数组作为参数。 在VB中如何调用C++Builder创建的DLL 在VB中设置常用的外部设备 很急的问题!希望大家帮忙! jb8中类找不到了??? 请教高手:如何让label显示在text、button等的上面? 新手请高手帮忙了~~~ 谢谢~~~ 500分求菜单功能。 修改数据,提交保存老报错,纳闷~~~ 急!在RED HAT LINUX中怎么配置POP和STMP服务器? 散分呵呵 是真还是假,群众的眼睛是雪亮的! 求助:XP和2003双操作系统,XP用PQ分区后在2003里找不到? 500分求菜单功能。 treeview控件,如何让其点击结点后再从数据库中取得这个节点的下一层节点? 如何在SQL SERVER 2000导入mis.bak文件? HELP!一道规划问题的优化!源代码 虚心的小弟,散分(分不多) 在线等待!!sql 无法登陆 500分求菜单功能。 用VC写的dll在vb上怎么用? 这样的sql 怎样写 WIN2000和LINUX与APACHE的搭配的困惑 高分求助,各位进来帮一帮吧,有问题请教,急,急!!! 找不到包在线等 我就不相信CSDN没有高手,帖出代码求救!!! 在服务器端监视客户记录 怎样使用vc+soap kit调用web service,麻烦添加注解! 中国科普之我见(普鲁日尼科夫),一种局外人难得的评说,你一定要看! 怎么找到这个东西 jScrollPanel.getViewport这个里面的getViewport代表了什么?Viewport的作用是什么?谢谢 ███请问,如何判断"\\192.168.0.123\temp"这个目录是否存在?███ 谁可以告诉我如何通过msflexgrid实现查询? 高分相给! 迷茫啊................ 大家来看看1997--2002的历届Jolt震撼大奖名单~ mmqm.exe 篡改IE的问题。给分!! EJB设计模式.实战EJB.精通EJB......等等----一个超好网址 简单快速 资源不敢独占 拿出来分享 如何实现打印功能? 怎样才能填充由两条贝塞尔曲线围成的封闭区域,谢谢了 请教关于数据库连接的问题 在sstab控件上怎么动态添加控件! ★★★★★★应邀申请[专题开发]版主,谢谢大家支持!★★★★★★ 通过代理(采用XP自带internet共享)上网的奇怪问题! 怎样才能将3DMAX做的动画嵌入到DELPHI7中,各位求救啦!? 请教一个困扰我好长时间的问题? 【回复被误删,导致本人满性欲降低,悲痛欲绝,请版主回复本人性欲】 如何判断窗体已经Unload,但还没有成为Nothing? 怎样修改jboss-3.2.1_tomcat-4.1.24的端口号,请多指教 word文档怎么打不开 HELP!一道规划问题的优化! 问题描述(太长了,只好发到2个贴子) 怎么找到这个东西 怎样将一个16进制的数转换为2进制 刚接触vc,有关List Box控件的问题 你用手机上过网吗,怎么设置的? 英语翻译求这首诗的原版翻译关于9.11的 IF I KNEW If I knew it would be the last time That I''d see you fall asleep,I would tuck you in more tightly and pray the Lord,your soul to keep.If I knew it would be the last time that I see you w 关于老舍又是一年芳草绿老舍又是一年芳草绿的题目渊源请结合该文章作具体品评该题目选取缘由 台灯频闪有哪些可能的原因?原来的台灯频闪了,于是这几天换了一个.结果没用一会新的又开始闪.是灯自身的原因还是电源什么的外部问题?PS前后两盏灯都是白色光线的护眼灯.用的是节能灯 团购券验证有效期什么意思 填大于小于或等于7∕3乘5( )5又7分之三 七分之三乘五( )七分之三 七分之三乘五( )五 七分之三乘七分之三( )七分之三 七分之三乘一又七分之三( )七分之三 bListen==TRUE?gfor(i=0;i 团购英语作文 英语作文团购的好处 英语翻译If you have any outstanding application documentation which you were unable to upload against your application or documentation that you did upload but needed to provide certified* hard copies for sighting and verification,please forward 解方程30x=1800 30x/30=30.这一步的根据是:-------------------- 诸葛亮熟读兵法,上知天文、下知地理,是一个诡计多端的军事家(修改病句) 大腕心声:做让人羡慕的浙商 做让人尊英国调查:1/6妻子不让丈夫看到自己国际新闻早报:捷克议会提前大选结束日本一男子疑因过劳自杀 家属要求赔偿各国宇航员吁国际社会合作防范小行星撞媒体称世贸组织认定美日欧胜诉中国稀土美国人怎么看转基因中央巡视组再出发:“寻虎找蝇”强化震冯小刚否认“由着性子办春晚”:没傻到纪实摄影:初为人母(高清)日本一男子疑因过劳自杀 家属要求赔偿韩国举办慰安妇论坛静物全家福赛场上的时尚眼存善念 扬善行如何从刚上本科线跃到一本重点线 听高除了衣服还能看什么费尽心机翻墙偷盗,赃物竟有女性内衣洗坏赔了1600元甘肃玉门一男子感染鼠疫死亡“这一次,我想活下去”学生暑假矫牙 避免这些误区楚汉之三国武道之炼心诀末世桃花源阴阳弑神至尊钱皇逆霸无限血战场乱舞魔兽怨灵大陆魔族荣耀网游之人类荣誉东林大峡谷旅游香港迪士尼乐园美国小镇大街旅游居庸关关城云台旅游龙宫洞旅游南糯山旅游金竹壮寨旅游梦幻乐园旅游弥勒寺公园旅游愿生寺旅游朱自清故居旅游琼花观旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘