J2ME:clip視窗可使用anchor--轉(轉)

post0發表於2007-08-12
J2ME:clip視窗可使用anchor--轉(轉)[@more@]

  /**

  

  * drawClip 畫一個圖片的一部分。clip視窗可使用anchor。

  

  *

  

  * @param g

  

  *  Graphics

  

  * @param x

  

  *  int 要畫的位置x

  

  * @param y

  

  *  int 要畫的位置y

  

  * @param image

  

  *  Image 圖片

  

  * @param clipX

  

  *  int clip在圖片中的座標x

  

  * @param clipY

  

  *  int clip在圖片中的座標y

  

  * @param clipWidth

  

  *  int clip在圖片中的寬度

  

  * @param clipHeight

  

  *  int clip在圖片中的高度

  

  * @param anchor

  

  *  int 連結錨點

  

  */

  

      public static void drawClip(Graphics g, int x, int y, Image image,

  

     int clipX, int clipY, int clipWidth, int clipHeight, int anchor) {

  

     int[] old = { g.getClipX(), g.getClipY(), g.getClipWidth(),

  

    g.getClipHeight() }; //儲存原來的初始Clip大小和座標

  

  

  

     int offsetX = 0, offsetY = 0;

  

     switch (anchor) {

  

     // 對各種的anchor的處理就是對Graphics.TOP|Graphics.LEFT的相對偏移

  

     // 取各種情況下的相對於Graphics.TOP|Graphics.LEFT的X,Y偏移,最後

  

     // 以Graphics.TOP|Graphics.LEFT的anchor畫出圖形

  

     case Graphics.HCENTER | Graphics.TOP:

  

     offsetX = clipWidth / 2;

  

     break;

  

     case Graphics.RIGHT | Graphics.TOP:

  

     offsetX = clipWidth;

  

     break;

  

     case Graphics.LEFT | Graphics.VCENTER:

  

     offsetY = clipHeight / 2;

  

     break;

  

     case Graphics.HCENTER | Graphics.VCENTER:

  

     offsetX= clipWidth /2;

  

     offsetY = clipHeight / 2;

  

     break;

  

     case Graphics.RIGHT | Graphics.VCENTER:

  

     offsetX = clipWidth;

  

     offsetY = clipHeight /2;

  

     break;

  

     case Graphics.LEFT | Graphics.BOTTOM:

  

     offsetY = clipHeight;

  

     break;

  

     case Graphics.HCENTER | Graphics.BOTTOM:

  

     offsetX = clipWidth / 2;

  

     offsetY = clipHeight;

  

     break;

  

     case Graphics.RIGHT | Graphics.BOTTOM:

  

     offsetX = clipWidth;

  

     offsetY = clipHeight;

  

     break;

  

     }

  

     g.setClip(x - offsetX, y - offsetY, clipWidth, clipHeight);

  

     g.drawImage(image, x - clipX - offsetX, y - clipY - offsetY,

  

    Graphics.TOP | Graphics.LEFT);

  

     g.setClip(old[0], old[1], old[2], old[3]); //畫完後恢復CLIP大小位置

  

      }

  

  

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951591/,如需轉載,請註明出處,否則將追究法律責任。

相關文章