最初に、前回解説した具体的な描画機能について、実際にサンプルコードを見ていこう。

矩形の描画・塗りつぶし

 矩形に関するAPIは、矩形の左上の座標と幅および高さを指定することでそれぞれの矩形を描画できる。drawRect()は塗りつぶし無しの矩形描画、fillRect()は前景色での塗りつぶしありの矩形描画であり、clearRect()は背景色での塗りつぶしありの矩形描画である。パラメータとして、塗りつぶし開始の左上座標と塗りつぶしの幅と高さを指定する。以下は、drawRect()のサンプルである。

public class DrawRectSample extends Canvas {
    int width, dw;
    int height, dh;

    DrawRectSample() {
        // 画面の横幅取得
        width = Display.getWidth();
        dw = width / 10;
        // 画面の縦幅取得
        height = Display.getHeight();
        dh = height / 10;
    }

    public void paint(Graphics g) {
        // 描画開始
        g.lock();
        // 画面を背景色で塗りつぶす
        g.clearRect(0, 0, width, height);
        // 矩形を四つ描画
        for (int i = 1; i < 5; i++) {
            g.setColor(Graphics.getColorOfName(i));
            g.drawRect(dw*i, dh*i, width-dw*i*2, height-dh*i*2);
        }
        // 描画終了
        g.unlock(true);
    }
}

 以下はfillRect()のサンプルである。drawRect()のサンプルのg.drawRect()をg.fillRect()に変更しただけであるが、描画結果で矩形が重ね合わせされ、後に描画した矩形ほど前景に描画されるのがわかる。

public class FillRectSample extends Canvas {
    int width, dw;
    int height, dh;

    FillRectSample() {
        // 画面の横幅取得
        width = Display.getWidth();
        dw = width / 10;
        // 画面の縦幅取得
        height = Display.getHeight();
        dh = height / 10;
    }

    public void paint(Graphics g) {
        // 描画開始
        g.lock();
        // 画面を背景色で塗りつぶす
        g.clearRect(0, 0, width, height);
        // 塗りつぶし矩形を四つ重ね合わせ描画
        for (int i = 1; i < 5; i++) {
            g.setColor(Graphics.getColorOfName(i));
            g.fillRect(dw*i, dh*i, width-dw*i*2, height-dh*i*2);
        }
        // 描画終了
        g.unlock(true);
    }
}

この記事は会員登録で続きをご覧いただけます

日経クロステック登録会員になると…

新着が分かるメールマガジンが届く
キーワード登録、連載フォローが便利

さらに、有料会員に申し込むとすべての記事が読み放題に!
日経電子版セット今なら2カ月無料