程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 用VB實現屏幕滾屏保護效果

用VB實現屏幕滾屏保護效果

編輯:VB綜合教程
曾見過這樣一種屏幕保護程序:靜止的屏幕突然整屏上下或左右翻滾起來,這種奇特的屏幕保護效果是如何制造出來的?當我告訴你其中奧妙之後,你也可以利用VB來輕松地“編”出這種效果。下面以上下滾屏為例,說明實現的過程(限於篇幅,這裡只給出可直接實現的程序,關於屏幕保護程序的編寫暫不討論):
  
  實現效果一:畫面在漆黑的背景屏幕裡滾動,其思路是將整屏畫面抓到一個窗體內,而將另一個窗體的背景置黑,首先創建兩個窗體forml和form2,置AutoRedraw屬性為True,BorderStyle屬性為None(無邊框),將form2的Backcolor置為黑色。在forml中編制程序如下:
  DimScreenhWnd%,ScreenDC%,rc%
  ′WindowsAPI函數
  DeclareFunctionBitBlt%Lib"GDI"(ByValhDestDC%,ByValdx%,ByValdy%,ByValnWidth%,ByValnHeight%,ByValhSrcDC%,ByValsx%,ByValsy%,ByValdwRop&)
  DeclareFunctionGetDesktopWindow%Lib"USER"()
  DeclareFunctionGetDC%Lib"USER"(ByValhWnd%)
  DeclareFunctionReleaseDC%Lib"USER"(ByValhWnd%,ByValhDC%)
  
  SubForm-Load
  ′form1窗體大小、位置與屏幕重合
  form1Width=ScreenWidth
  form1Height=ScreenHeight
  form1left=0
  form1top=0
  ′form2窗體大小、位置與屏幕重合
  form2Width=ScreenWidth
  form2Height=ScreenHeight
  form2left=0
  form2top=0
  ′將整屏畫面抓到form1中
  ScreenhWnd%=GetDesktopWindow%()
  ScreenDC%=GetDC%(ScreenhWnd%)
  rc%=BitBlt%(form1hDC,0,0,form1ScaleWidth,form1ScaleHeight,
  ScreenDC%,0,0,&HCC0020)
  rc%=ReleaseDC%(ScreenhWnd%,ScreenDC%)
  ′顯示form1和form2
  form2Show
  form1Show
  ′上下移動form1
  WhileTrue
  form1Top=form1Top+500
  ′500為移動速度
  ifform1Top>ScreenHenghtThen
  ′超出屏幕下界時回到最上面
  form1Top=-ScreenHeight
  Endif
  DoEvents′響應其它事件
  Wend
  EndSub
  ′點擊鼠標結束滾幕
  SubForm-MouseDown()
  End
  EndSub
  實現效果二:整屏畫面連續不斷地翻滾。最簡單的一個思路是將整屏畫面抓到兩個一樣的窗體中交替連續地滾動出現,在上述程序的基礎上修改如下:
  form2Top=-ScreenHenght
  ′將form2緊接form1的頂部放置
  rc%=BitBlt%(form2hDC,0,0,form2ScaleWidth,form2ScaleHeight,ScreenDC%,0,0,&HCC0020)
  ′增加此句,將整屏抓到form2中
  WhileTrue
  form2Top=form2Top+500
  Ifform2Top<0Then
  form1Top=form2Top+ScreenHeight
  ′form1在form2下面
  Else
  form1Top=form2Top-ScreenHeight
  ′form1在form2上面
  EndIf
  Ifform2Top>ScreenHeightThen
  form2Top=-ScreeenHeight
  ′form2超出下界時回到最上面
  Eenif
  DoEvents
  Wend->

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