21xrx.com
2025-03-24 05:01:55 Monday
文章检索 我的文章 写文章
利用JAVA绘制圣诞树 欢度佳节
2023-06-19 18:22:46 深夜i     11     0
Java 绘图 圣诞树

我最近学习了Java绘图,于是我想展示一下我的绘图技巧,来让大家在这个圣诞节里欣赏一下我的作品。

首先,在这个程序里,我需要使用到Java的图形库——Graphics2D。我先导入了这个库:

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.Random;
import javax.swing.*;

然后我开始绘制我的圣诞树。代码如下:

public void drawTree(Graphics2D g2) {
   g2.setColor(Color.green);
   GeneralPath gp = new GeneralPath();
   gp.moveTo(-20, 0);
   gp.lineTo(20, 0);
   gp.lineTo(0, -50);
   gp.closePath();
   g2.fill(gp);
   gp = new GeneralPath();
   gp.moveTo(-15, -35);
   gp.lineTo(15, -35);
   gp.lineTo(0, -70);
   gp.closePath();
   g2.fill(gp);
   g2.setColor(Color.orange);
   Ellipse2D.Double circle = new Ellipse2D.Double(-5, -100, 10, 10);
   g2.fill(circle);
}

这个程序使用了GeneralPath类和Ellipse2D类。GeneralPath类允许你创建任意复杂度的形状。而Ellipse2D类则是用于绘制椭圆形的。

除了绘制树本身,我还添加了一些细节,比如金色的星星:

g2.setColor(Color.yellow);
GeneralPath star = new GeneralPath();
star.moveTo(0, -75);
for (int i = 0; i < 5; i++) {
  star.lineTo(Math.sin(2 * i * Math.PI / 5) * 20,
    -Math.cos(2 * i * Math.PI / 5) * 20 - 75);
  star.lineTo(Math.sin((2 * i + 1) * Math.PI / 5) * 8,
    -Math.cos((2 * i + 1) * Math.PI / 5) * 8 - 75);
}
star.closePath();
g2.fill(star);

还有一些彩球和圣诞帽:

g2.setColor(Color.red);
g2.fill(new Rectangle2D.Double(12, -45, 10, 10));
g2.setColor(Color.blue);
g2.fill(new Rectangle2D.Double(-22, -28, 10, 10));
g2.setColor(Color.yellow);
g2.fill(new Rectangle2D.Double(-2, -50, 10, 10));
g2.setColor(Color.white);
g2 = (Graphics2D)g2.create();
g2.translate(0, -70);
AffineTransform save = g2.getTransform();
g2.rotate(20 * Math.PI / 180);
g2.fill(new Rectangle2D.Double(-18, -37, 10, 10));
g2.setTransform(save);
g2.rotate(-20 * Math.PI / 180);
g2.fill(new Rectangle2D.Double(8, -65, 10, 10));

最后,在主函数里,我使用了Swing库来显示我的画作:

public static void main(String[] args) {
   SwingUtilities.invokeLater(new Runnable() {
     public void run() {
        JFrame frame = new JFrame();
        frame.add(new Mypanel());
        frame.setSize(400, 400);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
   });
}

在窗口里,你将看到一个我用Java绘制出来的圣诞树,加上彩球和圣诞帽,细节十分吸引人。赶紧跟我一起试试吧!

  
  

评论区