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

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

VB5實現窗口圖像縮放、滾動技巧

2019-11-18 17:36:31
字體:
來源:轉載
供稿:網友
----VisualBasic是Windows平臺中最常用的應用軟件開發語言,窗口圖像縮放、滾動是圖像處理、多媒體數據庫等應用軟件開發中的基本功能。本文將介紹如何用VB5.0實現地窗口圖像縮放和滾動技巧,供讀者在各種語言系統開發中參考。

----一、獲取圖像

----本文所介紹的圖像縮放并沒有對真正的圖像進行縮放,而是復制一幅窗口圖像的真實畫面,對這個窗口圖像附本進行局部縮放和滾動,獲取窗口圖像可使用Windows的API函數來實現。具體來說,實現窗口圖像縮放、滾動需要用GetDeskTopWindow()函數獲取桌面窗口句柄,再通過GetDC()函數轉換為描述表句柄,則用BitBlt()函數把桌面圖像復制到任意圖形容器控件中,桌面圖像復制完成后,再用ReleaseDC釋放窗口描述表,各API函數的具體使用方法參見本文的例子程序。

----本文所用的API函數包含在WIN95/98的GDI32.DLL和USER32.DLL動態鏈接庫中,在使用時可通過VB5.0的TEXTVIEWER復制到所開發的應用程序中。

----二、圖像縮放

----圖像縮放顯示的基本原理就是把原圖像的一部分縮放后再送入窗口的圖形容器控件中,在VB中可用內部命令PaintPicture來進行,語法格式為:

PaintPicturePic,DestX,DestY,DestWidth,
DestHeight,ScrX,ScrY,ScrWidth,ScrHeight

----其中,Pic為圖片對象,如圖形控件對象等;

DestX,DestY為目標圖像起始坐標;
DestWidth,DestHeight為目標圖像幅面尺寸;
ScrX,ScrY為源圖像起始坐標;
ScrWidth,ScrHeight為源圖像剪裁尺寸。

----該命令就是把一個源圖像資源任意復制到指定的區域,其功能相當于API函數的BitBlt,但使用更簡單,若復制時改變源圖像的ScrWidth,ScrHeight或目標圖像的DestWidth,DestHeight可使復制后的圖像尺寸發生變化,實現窗口圖像的縮放顯示。若ScrWidth,ScrHeight或DestWidth,DestHeight為負值還可實現窗口圖像的水平、垂直反轉顯示。因此,在把源圖像送入目標圖形容器控件時,若改變源圖像的幅面尺寸,即可實現圖像的縮放處理。

----三、圖像滾動

----當載入圖像尺寸大于圖形控件窗口時,為了便于瀏覽、選取必須對窗口圖像滾動操作。窗口圖像滾動可通過水平滾動控件HScroll和垂直滾動控件VScroll來實現,通過控件的改變值HScroll.Value和VScroll.Value來控制PaintPicture命令中的源圖像坐標ScrX和ScrY,即可實現窗口圖像的滾動操作。

----四、圖像縮放、滾動實現

----本文可對非壓縮BMP位圖進行縮放、滾動,非壓縮BMP位圖的寬度和高度在文件開始11H后的8個字節。若讀者需要對其它圖像格式(如JPG,TIF等)進行縮放操作,可根據本文介紹的方法對找出相應的圖像高度和寬度即可,具體實現步驟如下:

----1.執行“File>MX=HScroll1.Value (X-X0)
MY=VScroll1.Value (Y-Y0)
IfMX>0AndMX<HScroll1.MaxThenHScroll1.Value=MX
IfMY>0AndMY<VScroll1.MaxThenVScroll1.Value=MY
EndIf
EndSub
PrivateSubImageWin_MouseDown(ButtonAsInteger,
ShiftAsInteger,XAsSingle,YAsSingle)
X0=X:Y0=Y'拖動鼠標初值
EndSub

----5.在ZoomIn控件和ZoomOut的Click事件中輸入下列程序,對窗口圖像進行放大、縮小處理。

PrivateSubZoonIn_Click()
IfAMP<5ThenAMP=2*AMP
'放大系數小于5,則放大圖像
AppImage.ImageWin.PaintPictureImageWin.Image,
0,0,AMP*DX,AMP*DY,PX,PY,SX,SY
EndSub
PrivateSubZoomOut_Click()
AppImage.ImageWin.Cls
'清除窗口圖像
IfAMP>0.25ThenAMP=AMP/2
'放大系數大于0.25,則縮小圖像
AppImage.ImageWin.PaintPicture
ImageWin.Image,0,0,AMP*DX,AMP*DY,PX,PY,SX,SY
EndSub

----6.在HScroll控件和VScroll控件的Change事件中輸入下面程序,對窗口圖像進行滾動處理。

PrivateSubHScroll1_Change()
PX=HScroll1.Value*DW/HScroll1.Max
'計算水平滾動位置
AppImage.ImageWin.PaintPictureImageWin.Image,
0,0,AMP*DX,AMP*DY,PX,PY,SX,SY
EndSub
PrivateSubVScroll1_Change()
PY=VScroll1.Value*DH/VScroll1.Max
'計算垂直滾動位置
AppImage.ImageWin.PaintPictureImageWin.Image,
0,0,AMP*DX,AMP*DY,PX,PY,SX,SY
EndSub

----7.在ExitButton控件的Click事件中輸入下面程序,用于結束程序、關閉窗口。

PrivateSubExitButton_Click()
End
EndSub

----五、應用說明

----窗口圖像滾動是各種數據查詢系統、多媒體圖形數據庫系統開發中的基本功能之一,本文用WindowsAPI函數實現了窗口圖像縮放、滾動,該方法可適用于VisualC 等語言。本文全部程序均在WIN98環境中VisualBasic5.0下調試通過。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲人成中文字幕在线观看 | 性猛aa久久久 | 91精品国产成人 | 久久9色| 欧美日韩手机在线观看 | 日美av在线 | 最新中文在线视频 | 成人午夜视屏 | 手机国产乱子伦精品视频 | 精品亚洲夜色av98在线观看 | 成人在线视频精品 | 鲁丝一区二区二区四区 | 欧美一区二区三区久久精品视 | 羞羞电影网| 精品亚洲夜色av98在线观看 | 亚洲 综合 欧美 动漫 丝袜图 | 一区二区三级视频 | 黄色av.com | 成人在线观看免费高清 | 国产亚洲精久久久久久蜜臀 | 国产羞羞视频在线免费观看 | 亚洲午夜影院在线观看 | av在线免费看片 | 欧美成人一区二区三区 | 久久3| 天天操天天碰 | 免费a观看 | 免费a级片视频 | 国产亚洲综合一区二区 | 国产乱弄 | 欧美69free性videos | 一级免费大片 | 毛片毛片免费看 | 国产免费成人在线 | 一本色道久久久888 国产一国产精品一级毛片 国产精品高潮视频 | 精品国产一区在线观看 | 中文字幕在线观看91 | 久久精品国产精品亚洲 | 一级黄色免费观看视频 | 一级免费看片 | 亚洲91精品 |