麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

VB5.0中基于桌面的屏幕技巧

2019-11-18 17:36:28
字體:
來源:轉載
供稿:網友
->----WINDOWS95的桌面是用戶的一個主要工作場所,如果你能使這個桌面移動起來或者發生其它變化,將是一種別具一格屏幕特技效果,而實際上目前具有類似效果的程序并不少見,比如MicrosoftPLUS!中提供的一種屏幕保護程序,下面介紹在VB5.0中實現桌面變化特技的基本原理和具體操作過程。

----一、桌面變化的實質:這種編程效果的奧妙在于,它不是使真正的WINDOWS95桌面發生了變化,而是啟動了一個具有黑色背景的且運行在最大化模式下的應用程序,在這個程序中復制了一張和桌面完全一樣的圖像,覆蓋在整個桌面之上,通過一些特殊的操作使這幅圖像在黑色的背景下發生扭曲、移動等動作,當結束此程序時,自然恢復到原來的桌面狀態,整個過程連貫進行,即可以給人一種桌面發生變化的假象。

----二、基本實現原理:首先必須通過有關的WINDOWSAPI函數,取得桌面窗口的句柄,然后把此桌面圖像放入與屏幕尺寸相同的圖形框或其它圖形容器控件之中,然后以此為圖像源,利用其它圖形控件或有關的圖像處理函數,靈活地控制這幅圖像,使之產生特殊的屏幕效果。編程時需要使用下面幾個API函數:

----BitBlt:一個較常見的圖像處理函數,完成圖像的復制工作;

----GetDC:獲得窗口的描述表句柄;

----GetDesktopWindow:返回桌面窗口句柄;

----ReleaseDC:釋放窗口描述表;

----具體的參數格式及使用方法見后面的程序代碼。

----這里還需要使用一個VB內部函數PaintPicture,語法格式:

PaintPicturePic,destX,
destY,destWidth,destHeight,
scrX,scrY,scrWidth,scrHeight
其中Pic:為圖片對象,
如圖形框Picture等;
destX,destY:目標圖像位置;
destWidth,destHeight:目標圖像尺寸;
scrX,scrY:原圖像的裁剪坐標;
scrWidth,scrHeight:原圖像的裁剪尺寸;

----此命令的功能就是把一個源圖像資源任意復制到指定的區域,其功能相當于API函數的BitBlt,但使用更為簡單。

----其中有一點需要說明,在VB通常有兩種圖形控件可以使用,即圖形框PICTURE及圖像框IMAGE,其中PICTURE具有與窗體通用的Hdc句柄屬性,所以可方便的進行圖像復制,而IMAGE最大的優點是具有Stretch伸縮性,可方便的進行圖像的縮放處理,所以在編程時會涉及到把圖像從圖形框PICTURE復制到圖像框IMAGE的動作,這里需要澄清圖形框PICTURE的兩個相似的屬性即PICTURE及IMAGE,比如一般可用下面的命令在圖形框中裝入圖像:

----Picture1.picture=Loadpicture("c:/windows/setup.bmp")

----此時可用下面的命令把圖像復制到圖像框中:

----SetImage1.picture=Picture1.Picture

----而利用BitBlt命令復制到Picture中的圖像則不是它的Picture屬性,使用上述的復制命令將無法得到真實的圖像,而必須使用其Image屬性,AutoRedraw屬性可以引起Image改變,Image是指向位圖的句柄,當AutoRedraw為True時,對象的hDC屬性成為指向設備描述體的句柄,復制命令為:

----SetImage1.Picture=Picture1.Image

----同樣,在針對上述的Picture兩種不同的裝入圖像方法,使用圖像重寫命令PaintPicture也需要兩種不同的方法:

----PaintPicturePicture1.Image,x,y,Width,Height

----PaintPicturePicture1.Picture,x,y,Width,Height

----三、一個演示程序的編制過程

----創建一個新的工程,在窗體Form1上放置一個圖形框Picture1和一個圖像框Image1,置Form1及Picture1的AutoReadraw屬性為True,置form1的BorderStyle屬性為None,背景BackColor為黑色,如果想要任務條安全地參加特技運動,最好使程序運行在最大化模式,即置Form1的WIndowState屬性為Maximized。然后進行API函數說明,可通過APIViewer直接獲得,把其放入一個BAS模塊文件中,也可以直接放在窗體Form1代碼文件的General段中,但此時在函數前面必須加上Fori=0ToScreen.Width*2/5
Picture1.Left=Picture1.Left 5
IfPicture1.Left>Screen.WidthThen
Picture1.Left=-Screen.Width
EndIf
DoEvents
Nexti
'縱向移動
Fori=0ToScreen.Height*2/5
Picture1.Top=Picture1.Top 5
IfPicture1.Top>Screen.HeightThen
Picture1.Top=-Screen.Height
EndIf
DoEvents
Nexti
'桌面上顯示文字
Fori=0To50
WithPicture1
.ScaleMode=3'以象素為單位
.FontTransparent=True
.Font.Size=Rnd*30 10
.Font.Italic=True
.ForeColor=RGB(Rnd*256,Rnd*256,Rnd*256)
.FontName=Screen.Fonts(Rnd*7 14)
EndWith
hh=Picture1.TextHeight("OKDESKTOP演示")
ww=Picture1.TextWidth("OKDESKTOP演示")
X=Rnd*(Picture1.ScaleWidth-ww)
Y=Rnd*(Picture1.ScaleHeight-hh)
Picture1.Line(X-2,Y-2)-(X ww 2,
Y hh 2),RGB(Rnd*256,Rnd*256,Rnd*256),BF
Picture1.Line(X,Y)-(X ww,Y hh),
RGB(Rnd*256,Rnd*256,Rnd*256),BF
Picture1.CurrentX=X
Picture1.CurrentY=Y
Picture1.Print"OKDESKTOP演示"
DoEvents
Nexti
'桌面變暗
Form1.Picture1.ScaleMode=3'以象素為單位
Forj=0ToPicture1.ScaleHeight/2
Picture1.Line(0,2*j)-(Picture1.ScaleWidth,2*j),RGB(0,0,0)
Nextj
EndSub
'強制退出程序
PrivateSubPicture1_Click()
End
EndSub->
->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久久久综合 | 日本一区视频在线观看 | 久久精品探花 | 久久蜜臀一区二区三区av | 精品xxxx户外露出视频 | 欧美一级高潮片免费的 | 亚洲第一综合色 | 精品一区二区在线观看视频 | 最近中文字幕一区二区 | 调教小男生抽打尿孔嗯啊视频 | www.精品在线 | 一级视频片| 久久经典国产视频 | 三人弄娇妻高潮3p视频 | 免费毛片在线视频 | 一级电影免费在线观看 | 一本色道久久综合亚洲精品图片 | 国产色片在线观看 | 色婷婷av一区二区三区久久 | 亚洲αv| 精品亚洲午夜久久久久91 | 91网址在线播放 | 91成人在线免费 | 色网站在线免费观看 | 国产免费观看视频 | 久久亚洲一区二区三区成人国产 | 久久网一区二区 | 久久免费视频1 | 国产精品成人亚洲一区二区 | 2021狠狠操| 欧美在线一级 | 日韩视频中文 | 精品久久久久久久久久久下田 | 久久精品成人 | 欧美韩国一区 | 精品一二三区视频 | 国产精品久久久久久影视 | 全黄裸片武则天一级第4季 偿还电影免费看 | 一区二区久久精品66国产精品 | 中国3xxxx | 日本高清在线免费 |