blackberry 5.0 api image mask / положение фонового изображения - PullRequest
0 голосов
/ 16 июня 2011

Я только начал учиться разрабатывать приложения BlackBerry и столкнулся с проблемой.Я не уверен, как можно перемещаться по фоновому изображению, которое больше, чем поле / менеджер, к которому оно применяется.Вот изображение, чтобы проиллюстрировать, что я имею в виду:

enter image description here

До сих пор я пытался добавить Bitmap к BitmapField внутри AbsolutePositionManager , думая, что я смогу установить размер абсолютного менеджера и просто переместить растровое поле внутри него.Это не так, управление просто принимает размер содержимого внутри него: (

Я пришел из внешнего интерфейса веб-разработчика, поэтому я ищу что-то похожее на фонАтрибут -position 'в css или какую-то маску изображения.

Заранее спасибо!

- обновление -

Это кодПример того, куда я попал. Теперь у меня есть менеджер нестандартного размера, который отображает кусок большего BitmapField. Мне просто нужен способ переместить это BitmapField вокруг.

package mypackage;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.container.AbsoluteFieldManager;

public class MyImage extends AbsoluteFieldManager {

    protected void sublayout(int maxWidth, int maxHeight){
        int displayWidth = 326;
        int displayHeight = 79;
        super.sublayout(displayWidth, displayHeight);
        setExtent(displayWidth, displayHeight);
    }

    public MyImage(){
        Bitmap _image = Bitmap.getBitmapResource("img.jpg");
        BitmapField image = new BitmapField(_image);
        add(image);
    }

}

1 Ответ

0 голосов
/ 17 июня 2011

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

public class MyManager extends VerticalFieldManager() {
    Bitmap _bg;
    public MyManager() {
        _bg = Bitmap.getBitmapResource("img.jpg");
    }

    protected void paint(Graphics graphics) {
        graphics.drawBitmap(x_offset, y_offset, _bg.getWidth(), _bg.getHeight(), _bg, 0, 0);
        super.paint(graphics);
    }

}

Теперь вы можете просто установить x_offset и y_offset в любое положение, и оно будет смещено. Если вам нужно возиться с размером диспетчера, чтобы соответствовать растровому изображению, добавьте:

protected void sublayout(int width, int height) {
    super.sublayout(width, height);
    setExtent(Math.min(width, Math.max(getWidth(), _bg.getWidth())), Math.min(height, Math.max(getHeight(), _bg.getHeight()));
}

Надеюсь, это поможет!

...