为VB窗口增添平铺贴图背景
2018-06-17 17:15:24来源:未知 阅读 ()
BitBlt函数的作用是将位图从一个设备描述表拷贝到另一个与之兼容的设备描述表,它的语法是:BitBlt(ByValhDestDC,ByValX,ByValY,ByValnWidth,ByValnHeight,ByValhSrcDC,ByValXSrc,ByValYSrc,ByValdwRop&)。其中,参数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,在其中加入如下声明语句:
DeclareFunctionBitBltLib"GDI"(ByValhDestDCAsInteger,ByValXAsInteger,ByValYAsInteger,ByValnWidthAsInteger,ByValnHeightAsInteger,ByValhSrcDCAsInteger,ByValXSrcAsInteger,ByValYSrcAsInteger,ByValdwRopAsLong)AsInteger
PublicConstSRCCOPY=&HCC0020
在项目中加入下列代码:
PrivateSubForm—Load()
DimhDCPicAsLong
DimXPosAsInteger
DimYPosAsInteger
DimRetAsInteger
DimHeightMaxAsInteger
DimWidthMaxAsInteger
DimWidthPicAsInteger
DimHeightPicAsInteger
'将位图载入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
'水平拷贝位图生成平铺贴图的第一行
ForXPos=0ToWidthMaxStepWidthPic
Ret=BitBlt(hDCPic,XPos,0,WidthPic,HeightPic,hDCPic,0,0,SRCCOPY)
Next
'垂直拷贝已生成的第一行直至生成整个平铺贴图
ForYPos=HeightPicToHeightMaxStepHeightPic
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
EndSub
按F5运行,Form1的窗口内就出现了一个平铺贴图背景。->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 调用API函数设计ABOUT窗口 2018-06-17
- 保存窗口位置来增加专业性 2018-06-17
- 建立无模式窗口 2018-06-17
- VB编程实用精典小技巧3例 2018-06-17
- 创建无Icon的窗口 2018-06-17
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