графика низкого уровня в Blackberry - PullRequest
1 голос
/ 01 февраля 2012

Привет всем, я новичок в Blackebrry.Я хочу использовать низкоуровневую графику для рисования растрового поля.В этом растровом поле мне нужно выполнить три действия -

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

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

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

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

1 Ответ

0 голосов
/ 01 февраля 2012

Во-первых, вы можете создать растровое изображение и получить из него графический объект, чтобы сделать на нем собственный рисунок.

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);
    }
}
...