2012-02-01 2 views
1

Привет всем Я новичок в blackebrry. Я хочу использовать графику низкого уровня для рисования bitmapfield. На этой bitmapfield мне нужно взять три action-низкоуровневая графика в Blackberry

  1. выбрать bitmapfield,
  2. перетащить его на экране в любом направлении и
  3. наконец выпустить его в любой точке на экране.

как я могу это сделать. если «Canvas» может быть решением ... может ли кто-нибудь помочь мне с некоторым примером кода для использования «Canvas».

Также есть ли какой-либо другой способ создания перетаскиваемого bitmapfield .. ??

Пожалуйста, помогите

ответ

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

+0

На самом деле экран не двигается когда-либо, и вы можете контролировать все, если у вас есть касание. Я не уверен, что вы пробовали, вы можете вставить свой код и то, что вы пробовали, с вашим вопросом. – Rupak

Смежные вопросы