Windows Mobile下實現圖片的3D效果

有些時候需要酷酷的效果,來裝扮一下我們的程序。

以下是類似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的效果。

只要想象力足夠豐富,可以用該函數弄出各種花哨的效果。比如旋轉門,比如放大鏡,比如......很多很多。

 

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/pknife/archive/2009/07/20/4363059.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章