Java图案绘制

本文介绍了如何在Java中进行图形绘制,通过在JPanel子类中重写paint方法利用Graphics2D对象实现。展示了创建窗口并添加图形的步骤,同时讲解了Area对象的加、减、交、异或等运算操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图案绘制主要是通过在JPanel类的子类中,重写paint()方法,并在该方法中使用Graphics2D类中的方法来实现的。
先上个效果图:
这里写图片描述
—ps:其实很简单,真不知道该怎么描述了。。。

在main方法中绘制一个显示图案的窗口:

JFrame window = new DrawFrame();
window.setTitle("绘制图形");        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBounds(100,100,600,400);
window.setVisible(true);

写一个类,去继承JFrame,把图案添加到窗口中

class DrawFrame extends JFrame{
  public DrawFrame(){
      add(new ArtDesignJPanel());
      pack();
  }
}

接下来就是继承JPanel绘图了:

public class ArtDesignJPanel extends JPanel{
    private Graphics2D g2;
    public void paint(Graphics g){
        g2 = (Graphics2D) g;
        paintFlower();

    }
    public void paintFlower(){
        g2.translate(getWidth()/2, getHeight()/2);
        Ellipse2D.Float ellipse = new Ellipse2D.Float(30, 0, 70, 20);
        Color color = new Color(0, 255, 0);
        g2.setColor(color);
        g2.fill(ellipse);
        int i = 0;
        while(i < 8){
            g2.rotate(30);
            g2.fill(ellipse);
            i ++;
        }
        ellipse = new Ellipse2D.Float(20, 0, 60, 15);
        color = new Color(255, 0, 0);
        g2.setColor(color);
        g2.fill(ellipse);
        i = 0;
        while(i < 8){
            g2.rotate(30);
            g2.fill(ellipse);
            i ++;
        }
        ellipse = new Ellipse2D.Float(10, 0, 50, 10);
        color = new Color(0, 0, 255);
        g2.setColor(color);
        g2.fill(ellipse);
        i = 0;
        while(i < 8){
            g2.rotate(30);
            g2.fill(ellipse);
            i ++;
        }
        ellipse = new Ellipse2D.Float(-10, -10, 20, 20);
        color = new Color(255, 0, 0);
        g2.setColor(color);
        g2.fill(ellipse);
    }
}

除此之外,对于图案的加减交异或运算:
Area area1 = new Area(ellipse1);
Area area2 = new Area(ellipse2);
加:
area1.add(area2);
减:
area1.subtract(area2);
交:
area1.intersect(area2);
异或:
area1.wxclusiveOr(area2);

g2.draw(area1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值