黑莓5.0 api图像蒙版/背景图像位置

时间:2011-06-16 15:56:16

标签: blackberry blackberry-eclipse-plugin blackberry-jde

我刚刚开始学习开发黑莓应用程序,但我遇到了一些障碍。我不确定如何移动比应用它的字段/管理器大的背景图像。这是一张图片来说明我的意思:

enter image description here

到目前为止,我已经尝试在 AbsolutePositionManager 中的 BitmapField 中添加位图,以为我可以设置绝对的大小经理,只需在其中移动位图字段。事实并非如此,管理层只需要考虑其中内容的大小:(

我来自前端web开发背景,所以我正在寻找的东西与css中的'background-position'属性或某种图像掩码类似。

提前致谢!

- 更新 -

这是我所需要的代码示例。我现在有一个自定义大小的管理器,显示一个较大的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 :(得分:0)

不要将其添加为Field,只需在Manager中的某个位置存储对它的引用,然后自己绘制它。这是一个未经测试的例子:

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

希望这有帮助!