黑莓中的低级图形

发布于 2025-01-01 12:10:34 字数 252 浏览 1 评论 0原文

大家好,我是 blackebry 的新手。我想使用低级图形来绘制位图字段。在此位图字段上,我需要执行三个操作 -

  1. 选择位图字段,
  2. 将其向任意方向拖动到屏幕中,
  3. 最后在屏幕上的任意点释放它。

我该怎么办? 如果“Canvas”可以是一种解决方案...任何人都可以帮我提供一些如何使用“Canvas”的示例代码吗?

还有其他方法可以制作可拖动的位图字段吗??

请帮忙

hi everyone I am new to blackebrry. I want to use low level graphics for drawing a bitmapfield. On this bitmapfield i need to take three action-

  1. pick the bitmapfield,
  2. drag it in the screen in any direction and
  3. finally release it at any point on the screen.

how can I do this.
if 'Canvas' can be a solution... can any one help me with some sample code for how to use 'Canvas'.

Also is there any other method for making a draggable bitmapfield..??

Please help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一桥轻雨一伞开 2025-01-08 12:10:34

首先,您可以创建一个位图并从中获取图形对象以在其上进行自定义绘图。

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

Firstly, you can create a bitmap and get a graphics object from it to do custom drawing on it.

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

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

[Edited]

I have added a code snippet for drag an image on a screen. You can check this code if it works on your side.

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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文