21xrx.com
2024-12-22 23:27:08 Sunday
登录
文章检索 我的文章 写文章
利用JAVA绘制圣诞树 欢度佳节
2023-06-19 18:22:46 深夜i     --     --
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绘制出来的圣诞树,加上彩球和圣诞帽,细节十分吸引人。赶紧跟我一起试试吧!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复