程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 為VB窗口增添平鋪貼圖背景

為VB窗口增添平鋪貼圖背景

編輯:VB綜合教程
“平鋪貼圖”是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的窗口內就出現了一個平鋪貼圖背景。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved