2012-02-01 51 views
1

大家好,我是黑人新手。我想使用低級圖形來繪製位圖。在此bitmapfield我需要採取三項行動爲黑莓低級圖形

  1. 挑bitmapfield,
  2. 拖動它在屏幕在任何方向和
  3. 在屏幕上的任意一點終於鬆開。

我該怎麼做。 如果Canvas可以成爲一個解決方案......任何人都可以幫助我解決一些如何使用Canvas的示例代碼。

也有任何其他的方法來製作一個可拖動的位圖字段.. ??

請幫

回答

0

首先,你可以創建一個位圖,並得到一個圖形從它反對做定製版上繪製。

Bitmap myBitmap = new Bitmap(widht, height); 
Graphics graphics = Graphics.create(myBitmap); 

// now you can draw anything on graphics supported by API 

將帖子

我已經在屏幕上增加了一個代碼段用於拖動的圖像。你可以檢查這個代碼,如果它在你身邊。

class MyScreen extends MainScreen { 
    private final Bitmap myBm; 
    private int wBm; 
    private int hBm; 
    private int xBm; 
    private int yBm; 
    private boolean dragStarted; 

    public MyScreen() { 
     myBm = Bitmap.getBitmapResource("img/myBitmap.png"); 
     if (myBm != null) { 
      wBm = myBm.getWidth(); 
      hBm = myBm.getHeight(); 
     } 
    } 

    protected void paint(Graphics graphics) { 
     // need to adjust z-index of the items added on screen. 
     super.paint(graphics); 
     if (myBm != null) { 
      graphics.drawBitmap(xBm, yBm, wBm, hBm, myBm, 0, 0); 
     } 
    } 

    protected boolean touchEvent(TouchEvent event) { 
     int x = event.getX(1); 
     int y = event.getY(1); 
     int eventCode = event.getEvent(); 

     if (dragStarted == false & (eventCode == TouchEvent.DOWN)) { 
      if (isDragActivated(x, y)) { 
       // need to adjust offset. 
       dragStarted = true; 
       updateBitmapLocation(x, y); 
      } 
     } 

     if (eventCode == TouchEvent.MOVE && dragStarted) { 
      updateBitmapLocation(x, y); 
     } 

     if (eventCode == TouchEvent.UP && dragStarted) { 
      dragStarted = false; 
      updateBitmapLocation(x, y); 
     } 

     // need to decide what to return 
     return true; 
    } 

    private void updateBitmapLocation(int xTouch, int yTouch) { 
     if (xTouch != xBm && yTouch != yBm) { 
      xBm = xTouch; 
      yBm = yTouch; 
      invalidate(); 
     } 
    } 

    private boolean isDragActivated(int x, int y) { 
     return (x >= xBm && x <= xBm + wBm && y >= yBm && y <= yBm + hBm); 
    } 
} 
+1

我已經嘗試了本way..its使得整個屏幕爲可拖動..我想拖tmage只有在不移動屏幕 – Swati 2012-02-01 12:50:27

+0

其實屏幕不動過,如果你有,你可以控制一切觸摸事件。我不確定你嘗試過什麼,你可以粘貼你的代碼,以及你試過的問題。 – Rupak 2012-02-01 14:10:42