BlackBerry 6:使用文本和渐变创建白色矩形图像

时间:2011-03-14 18:10:03

标签: image blackberry bitmap paint

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

enter image description here

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

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

效果很好,我可以通过光学触摸板滚动图像,也可以通过滑动手电筒屏幕。

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

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

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

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

谢谢! 亚历

1 个答案:

答案 0 :(得分: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并覆盖绘制方法:

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

}