1

白い丸い長方形をレンダリングするVerticalFieldManagerがあります。

これはコードです:

 VerticalFieldManager _vfmBackground = new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL | 
                Manager.NO_VERTICAL_SCROLLBAR | Manager.USE_ALL_WIDTH){
             public void paint(Graphics graphics)
                {
                    graphics.clear();
                    graphics.setColor(Color.WHITE);
                    graphics.fillRoundRect(10, 10,460, 400, 25,25 );
                    super.paint(graphics);
                }

              protected void sublayout(int maxWidth, int maxHeight)
                {
                    int displayWidth = (Display.getWidth());
                    int displayHeight = (Display.getHeight());

                    super.sublayout( displayWidth, displayHeight);
                    setExtent( displayWidth, displayHeight);
                }

        };

次に、青い長方形をレンダリングするBaseHeaderBlueScreenという名前のカスタムマネージャークラスを作成します。

public void paint(Graphics graphics)
    {
     graphics.clear();
     graphics.setColor(610212);
     graphics.fillRect(20, 0, Display.getWidth(), Display.getHeight());
     super.paint(graphics);
    }

    protected void sublayout(int maxWidth, int maxHeight)
    {
        int displayWidth = (Display.getWidth()-40);
        int displayHeight = ((Display.getHeight()/2))-90;

        super.setExtent( displayWidth, displayHeight);
    }   

最後に、そのカスタムマネージャーを白い角の丸い長方形でVerticalFieldManagerに追加します。

BaseHeaderBlueScreen _vhbs = new BaseHeaderBlueScreen(textTop, textBottom, 0);
        _vhbs.setPadding(20,30,0,0);
        _vfmBackground.add(_vhbs);

これは、青い長方形が白い長方形内に表示される方法です。

ここに画像の説明を入力してください

ただし、これが現在青い長方形が表示されている方法です(左側の灰色のスペースに注意してください)。

ここに画像の説明を入力してください

青い長方形を希望どおりに(左の灰色の境界線なしで)レンダリングするにはどうすればよいですか?

4

1 に答える 1

1

不必要にに電話をかけているだけだと思いますGraphics.clear()clear()グラフィックス領域に、現在背景色として設定されている色を入力することを目的としています。通常、次のように使用しますclear()

public void paint(Graphics g) {
    g.setBackgroundColor(Color.GRAY);
    // calling clear makes the background gray
    g.clear();

    // now draw some text
    g.setColor(Color.WHITE);
    g.drawText("hello", 20, 40);
}

clear()のAPIドキュメントから:

グラフィック領域全体を現在の背景色にクリアします。この場合、グローバルアルファは適用されないことに注意してください。

ただし、clear()他の電話をかける前に電話をかけています。

したがって、への2つの呼び出しを削除するだけですclear()(ただし、この特定の問題を引き起こしているのはでの呼び出しですBaseHeaderBlueScreen.paint())。

于 2012-12-05T14:13:56.080 に答える