【问题标题】:BlackBerry 6: creating white rectangle image with text and gradient黑莓 6:创建带有文本和渐变的白色矩形图像
【发布时间】:2011-03-15 16:27:01
【问题描述】:

我正在尝试创建一个看起来像矩形收音机拨号的自定义组件:

作为基础,我采用自定义 ScrollableImageField.java 组件并将其从我的屏幕中的项目资源中传递一个图像:

_dial = new FMRadioDial(EncodedImage.getEncodedImageResource("big_dial.png"));
_dial = new FMRadioDial(bmp);
add(_dial);

这很好用,我可以通过光学触摸板滚动图像,也可以通过滑动 Torch 屏幕。

然后我尝试自己生成一个白色的矩形图像:

Bitmap bmp = new Bitmap(Display.getWidth()*4, Display.getHeight()/2);
_dial = new FMRadioDial(bmp);
add(_dial);

这可以编译,但我得到一个黑色图像。

所以我的问题是:如何从代码生成图像(我应该在这里使用 Bitmap 还是 EncodedImage?)以及如何在其中绘制白色矩形、渐变和一些文本?

谢谢! 亚历克斯

【问题讨论】:

    标签: image blackberry bitmap paint


    【解决方案1】:

    您好,您可以这样做:

    int bmpWidth = 100;
        int bmpHeight = 100;        
        Bitmap bmp = new Bitmap(bmpWidth,bmpHeight);
        Graphics g = new Graphics(bmp);
        int[] X_PTS = { 0, 0, bmpWidth, bmpWidth };
        int[] Y_PTS = { 0, bmpHeight, bmpHeight, 0 };
        int[] drawColors = {0x646464, 0xffffff, 0xffffff, 0x646464 };           
        g.drawShadedFilledPath(X_PTS, Y_PTS, null, drawColors, null);        
        g.setColor(0x0000ff);
        g.drawText("TEXT", 50, 50);
    

    但是如果你只想显示它,你不需要创建Bitmap, 您可以扩展 Field 并覆盖 paint 方法:

    public class CustomField extends Field {    
    
    private int myWidth = 200;
    private int myHeight = 100;
    
    public int getPreferredWidth() {
        return myWidth;
    }
    
    public int getPreferredHeight() {
        return myHeight;
    }
    
    protected void layout(int width, int height) {              
        setExtent(myWidth, myHeight);
    }
    
    protected void paint(Graphics g) {
        int[] X_PTS = { 0, 0, myWidth, myWidth };
        int[] Y_PTS = { 0, myHeight, myHeight, 0 };
        int[] drawColors = {0x646464, 0xffffff, 0xffffff, 0x646464 };           
        g.drawShadedFilledPath(X_PTS, Y_PTS, null, drawColors, null);        
        g.setColor(0x0000ff);
        g.drawText("TEXT", 50, 50); }
    

    }

    【讨论】:

    • 没错,我不需要Bitmap,我会在paint()中绘制东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    相关资源
    最近更新 更多