Java グラフィカル インターフェイス --- 描画

目次

1. デッサン入門

2. 描き方

3.ケース


1. デッサン入門

さまざまなゲームなどの多くのプログラムは、ウィンドウ内にさまざまなグラフィックスを描画する必要があります.さらに、JavaEE プロジェクトを開発する場合でも、グラフィック検証コード、統計など、さまざまなグラフィックスやチャートをクライアントに動的に生成する必要がある場合があります。 . AWT の描画機能を使用する必要がある図など。

描画の原理: ボタンやフレームなど、多くのコンポーネントを学習してきました. コンポーネントごとに異なるグラフィックが表示されます. 実際、これらのコンポーネントによって表示されるグラフィックは、基本的に AWT 描画を使用して完成されます.
AWT では、実際に描画機能を提供するのは Graphics オブジェクトです。そのため、Component コンポーネントと Graphics オブジェクトの間の関係はどのようなもので、コンポーネントは独自のグラフィックを描画できるのでしょうか? コンポーネント クラスでは、コンポーネント グラフィックスの描画と更新を完了するために、次の 3 つのメソッドが提供されてい
ます
。 component
repaint() update メソッドを呼び出して、コンポーネントの外観を更新します

2. 描き方

 描画ステップ
1: クラスをカスタマイズし、Canvas クラスを継承し、Paint(Graphics g) メソッドを書き換えて描画を完了します; 2:
paint メソッド内で、Graphics オブジェクトの setColor()、setFont() などのメソッドを呼び出します実際に描画を開始する前に ペンの色やフォントなどの属性
3: Graphics ブラシの drawxxx() メソッドを呼び出して、描画を開始します。

 一般的に使用される方法:

setColor(Color c)    设置颜色
setFont(Font font)   设置字体
drawLine()           绘制直线
drawRect()           绘制矩形
drawRoundRect()      绘制圆角矩形
drawOval()           绘制椭圆形
drawPolygon()        绘制多边形
drawArc()            绘制圆弧
drawPolyine()        绘制折线
fillRect()           填充矩形区域
fillRoundRect()      填充圆角矩形区域
fillOval()           填充椭圆区域
fillPolygon()        填充多边形区域
fillArc()            填充圆弧对应的扇形区域
drawImage()          绘制位图

3.ケース

要件: 図に示すようにインターフェイスを作成し、対応するボタンをクリックして、表示されているグラフを描画します。

class Solution {
    //制造组件
    Frame s=new Frame("绘图");
    Button b1=new Button("绘制矩形");
    Button b2=new Button("绘制椭圆");
    private int f=0;
    private class canv extends Canvas{
        @Override
        public void paint(Graphics g) {
            if(f==1){
                //矩形
                g.setColor(Color.red);//设置画笔的颜色
                g.drawRect(50,50,200,200);
            }
            else if(f==2){
                //椭圆
                 g.setColor(Color.BLUE);
                 g.drawOval(50,50,200,100);
            }
        }
    }
    canv can=new canv();

    public void init(){
        b1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                f=1;
                can.repaint();
            }
        });
        b2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                f=2;
                can.repaint();
            }
        });
        Box b=Box.createHorizontalBox();
        b.add(b1);
        b.add(b2);
        can.setPreferredSize(new Dimension(400,400));

        s.add(b,BorderLayout.SOUTH);
        s.add(can);
        s.pack();
        s.setVisible(true);
    }
}



public class Test {
   public static void main(String[] args){
       new Solution().init();
   }
}

おすすめ

転載: blog.csdn.net/gaoqiandr/article/details/128631965