黑莓 - 定制BubbleChartField(Blackberry - custom Bubble

2019-06-26 20:46发布

我需要开发黑莓应用程序,它应该表现出气泡图。
如何实现此目的的自定义控制?
谢谢。

Answer 1:

在这里更新是KB 如何-创建图形领域

你应该更加具体和完整的在你的问题...
好了,只是为了显示你的方向:

public class BubbleChart extends Field {

    int mWidth = Display.getWidth();
    int mHeight = Display.getHeight();

    int[] mXpos = null;
    int[] mYpos = null;
    int[] mRad = null;
    int[] mColor = null;

    public BubbleChart(int[] xPos, int[] yPos, int[] rad, int[] colors) {
        this(xPos, yPos, rad);
        mColor = colors;
    }

    public BubbleChart(int[] xPos, int[] yPos, int[] rad) {
        mXpos = xPos;
        mYpos = yPos;
        mRad = rad;
    }

    public int getPreferredWidth() {
        return mWidth;
    }

    public int getPreferredHeight() {
        return mHeight;
    }

    protected void layout(int width, int height) {
        setExtent(getPreferredWidth(), getPreferredHeight());
    }

   protected void paint( Graphics graphics )
   {
       for( int i = 0, cnt = mXpos.length; i < cnt; i++ )
       {
           if( null != mColor )
               graphics.setColor( mColor[ i ] );
           else
               graphics.setColor( Color.WHITE );
           drawFilledCircle( graphics, mXpos[ i ], mYpos[ i ], mRad[ i ] );
           graphics.setColor( Color.BLACK );
           drawCircle( graphics, mXpos[ i ], mYpos[ i ], mRad[ i ] );
       }
   }

   private void drawFilledCircle( Graphics g, int x, int y, int r )
   {
       g.fillEllipse( x, y, x + r, y, x, y + r, 0, 360 );
   }

   private void drawCircle( Graphics g, int x, int y, int r )
   {
       g.drawEllipse( x, y, x + r, y, x, y + r, 0, 360 );
   }
}

并在某处应用:

class Scr extends MainScreen {
    public Scr() {
        int[] x = { 20, 100, 150 };
        int[] y = { 20, 100, 150 };
        int[] r = { 10, 50, 80 };
        int[] c = { Color.RED, Color.GREEN, Color.YELLOW };
        add(new BubbleChart(x, y, r, c));
    }
}


文章来源: Blackberry - custom BubbleChartField