有些時候需要酷酷的效果,來裝扮一下我們的程式。
以下是類似S1從右至左滑動的效果。
看起來還有點那個意思吧?
其實原理並不複雜,用到了一個畫圖函數StretchBlt。
函數功能:函數從源矩形中複製一個位元影像到目標矩形,必要時按目前目標裝置設定的模式進行映像的展開或壓縮。
函數原型:BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeighDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, DWORD dwRop);
參數:
hdcDest:指向目標裝置環境的控制代碼。
nXOriginDest:指定目標矩形左上方的X軸座標,按邏輯單位表示座標。
nYOriginDest:指定目標矩形左上方的Y軸座標,按邏輯單位表示座標。
nWidthDest:指定目標矩形的寬度,按邏輯單位表示寬度。
nHeightDest:指定目標矩形的高度,按邏輯單位表示高茺。
hdcSrc:指向源裝置環境的控制代碼。
nXOriginSrc:指向源矩形地區左上方的X軸座標,按邏輯單位表示座標。
nYOriginSrc:指向源矩形地區左上方的Y軸座標,按邏輯單位表示座標。
nWidthSrc:指定源矩形的寬度,按邏輯單位表示寬度。
nHeightSrc:指定源矩形的高度,按邏輯單位表示高度。
dwRop:指定要進行的光柵操作。光柵作業碼定義了系統如何在輸出操作中組合顏色,這些操作包括刷子、源位元影像和目標位元影像等對象。參考BitBlt可瞭解常用的光柵作業碼列表。
傳回值:如果函數執行成功,那麼傳回值為非零,如果函數執行失敗,那麼傳回值為零。
我們把一個矩形分成若干個小的矩形,針對每個小矩形,把裡面的內容通過StretchBlt函數縮小或放大到特定的目的地區域。通過肉眼看上去,就有了3D的效果。
只要想象力足夠豐富,可以用該函數弄出各種花哨的效果。比如旋轉門,比如放大鏡,比如......很多很多。