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

2016-02-19 16:31 30 1 收藏

人生本是一个不断学习的过程,在这个过程中,图老师就是你们的好帮手,下面分享的为VB窗口增添平铺贴图背景懂设计的网友们快点来了解吧!

【 tulaoshi.com - 编程语言 】

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

来源:http://www.tulaoshi.com/n/20160219/1612341.html

延伸阅读
标签: PS PS教程
本例中我们介绍一种简单方法,用Photoshop一尊普通的大理石雕像增添光照金属质感。 完成效果: 在Photoshop打开原图之后,在原图层上新建一个图层,然后进行渐变填充,效果如下: 改图层模式: 建立一个选区: 复制红通道: 按Ctrl+L调整色阶: 按Ctrl点击得到选区: 按Ctr...
标签: 花卉
金边瑞香是最好的瑞香花品种,花色美、花期长、花味香,是很名贵的花卉品种,金边瑞香的作用比较多,下面小编给大家一一介绍: 金边瑞香的作用: 金边瑞香的作用:1、观赏 金边瑞香有很高的观赏价值,树姿优美,枝条苍劲曲伸自然,叶片整齐光亮,青翠浓绿,花香浓郁,花期较长,是一种姿、色、香、韵...
VB的好处我就不多说了。VB初学者模仿能力很强,总希望自己的程序看起来专业一点,如用密码登录、制作限次版、限时版、强行启动等等,其实这些东西并不神秘,在VB里只要用少量代码就可实现。 1.最简单的可执行文件密码登录: 在程序启动时加入以下代码: PrivateSubForm_Load() DimaasVariant a=InputBox("请输入密码!") ...
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing If MsgBox("請注意看關閉的視窗", MsgBoxStyle.Question + MsgBoxStyle.OKCancel, "關閉") = MsgBoxResult.OK Then Dim d As Double For d = 1 To 0 + 0.2 Step -0.2 System.Threading.Thread.Sleep(50) Applic...
标签: 电脑入门
方法一: 用鼠标来实现。用鼠标左键拖动第一个窗口至桌面最左侧,然后再用鼠标左键拖动第二个窗口至桌面最右侧,它会自动占据半个屏幕,两个窗口就轻松地占据着屏幕的一左一右。 方法二: 用键盘来实现。先打开第一个窗口,然后同时按下WIN键+左方向键,然后再打开第二个窗口,然后同时按下WIN+右方向键,两个窗口也一分为二占据整个屏幕了...

经验教程

62

收藏

13
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部