您的位置:首页 > 编程语言 > Java开发

Java图案绘制

2017-11-20 16:25 211 查看
图案绘制主要是通过在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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: