黑马程序员技术交流社区

标题: 为祖国庆生 [打印本页]

作者: 被冷气冻伤    时间: 2016-10-4 19:45
标题: 为祖国庆生
有了这段程序,我也可以用我的方式给祖国庆生了!package com.heima.test;

import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;

import javax.swing.JFrame;

public class PaintFlag extends JFrame {
        private static final long serialVersionUID = 1L;
        private int width = 288, height = width / 3 * 2;
        private double maxR = 0.15, minR = 0.05;
        private double maxX = 0.50, maxY = 0.50;
        private double[] minX = { 0.75, 0.85, 0.85, 0.75 };
        private double[] minY = { 0.35, 0.45, 0.60, 0.70 };

        public PaintFlag() {
                setTitle("黑马程序猿--为祖国庆生");
                setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
        public void paint(java.awt.Graphics graphics) {
                super.paint(graphics);
                java.awt.Graphics2D g = (java.awt.Graphics2D) graphics;
                g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                RenderingHints.VALUE_ANTIALIAS_ON);

                // 画棋面
                g.setColor(java.awt.Color.red);
                g.fillRect(50, 50, width, height);

                g.setColor(java.awt.Color.yellow);
                // 画大星星
                double ox = height * maxX, oy = height * maxY;
                g.fill(createPentacle(ox, oy, height * maxR, -Math.PI / 2));

                // 画小星星
                for (int idx = 0; idx < 4; idx++) {
                        double sx = minX[idx] * height, sy = minY[idx] * height;
                        double theta = Math.atan2(oy - sy, ox - sx);
                        g.fill(createPentacle(sx, sy, height * minR, theta));
                }
        }

        /**
         * 创建一个五角星形状. 该五角星的中心坐标为(sx,sy),中心到顶点的距离为radius,其中某个顶点与中心的连线的偏移角度为theta(弧度)
         *
         * @return pentacle 一个☆
         */
        public static java.awt.Shape createPentacle(double sx, double sy,
                        double radius, double theta) {
                final double arc = Math.PI / 5;
                final double rad = Math.sin(Math.PI / 10) / Math.sin(3 * Math.PI / 10);
                GeneralPath path = new GeneralPath();
                path.moveTo(1, 0);
                for (int idx = 0; idx < 5; idx++) {
                        path.lineTo(rad * Math.cos((1 + 2 * idx) * arc),
                                        rad * Math.sin((1 + 2 * idx) * arc));
                        path.lineTo(Math.cos(2 * (idx + 1) * arc),
                                        Math.sin(2 * (idx + 1) * arc));
                }
                path.closePath();
                AffineTransform atf = AffineTransform.getScaleInstance(radius, radius);
                atf.translate(sx / radius, sy / radius);
                atf.rotate(theta);
                return atf.createTransformedShape(path);
        }

        public static void main(String[] args) {
                PaintFlag flag = new PaintFlag();
                flag.setBounds(100, 100, 400, 400);
                flag.setVisible(true);
        }
}

flag1.png (26.04 KB, 下载次数: 78)

flag1.png

作者: 三人壹大    时间: 2016-10-4 21:32
666                 

作者: 三人壹大    时间: 2016-10-4 21:33
awt是什么包?是到了GUI就能学到了吗?

作者: yinyujue    时间: 2016-10-4 22:38
好 强无敌
作者: 被冷气冻伤    时间: 2016-10-5 00:24
可以,GUI的时候会学到
作者: a65912555    时间: 2016-10-5 00:36
顶顶顶~~
作者: 灵活的胖子    时间: 2016-10-5 06:12
66666666666
作者: ysm颜    时间: 2016-10-5 10:07
你是学什么的?

作者: zhangchangzhi    时间: 2016-10-5 11:46
厉害了我的哥66666666666666666666
作者: 被冷气冻伤    时间: 2016-10-5 18:04
ysm颜 发表于 2016-10-5 10:07
你是学什么的?

学java的 啊
作者: 被冷气冻伤    时间: 2016-10-5 18:08
zhangchangzhi 发表于 2016-10-5 11:46
厉害了我的哥66666666666666666666

哈哈哈哈555555555555
作者: 被冷气冻伤    时间: 2016-10-5 18:09
a65912555 发表于 2016-10-5 00:36
顶顶顶~~

你才是大神
作者: ysm颜    时间: 2016-10-5 20:15
被冷气冻伤 发表于 2016-10-5 18:04
学java的 啊

java能做出国旗了

作者: barny    时间: 2016-10-5 20:36
我想多为祖国母亲多过几天生日
作者: 惠的海角    时间: 2016-10-6 22:28
感觉好强大,我啥时候也能这么六
作者: 被冷气冻伤    时间: 2016-10-6 22:56
惠的海角 发表于 2016-10-6 22:28
感觉好强大,我啥时候也能这么六

老师说了这个没什么卵用,纯粹拿来装逼
作者: 被冷气冻伤    时间: 2016-10-6 22:58
barny 发表于 2016-10-5 20:36
我想多为祖国母亲多过几天生日

同一个世界,同一个梦想
作者: 被冷气冻伤    时间: 2016-10-6 22:59
ysm颜 发表于 2016-10-5 20:15
java能做出国旗了

你想做别的也可以
作者: 彪悍不朽    时间: 2016-10-6 23:29
666.厉害
作者: day2up    时间: 2016-10-6 23:48
66666,庆生!
作者: zhangchangzhi    时间: 2016-10-7 08:00
6666666666666666666666
作者: 杨杰锋    时间: 2016-10-7 13:04

66666666666
作者: 杨杰锋    时间: 2016-10-7 13:11

66666666666
作者: Jarc    时间: 2016-10-7 14:01
可以的,很厉害
作者: IceLoveInFire丶    时间: 2016-10-7 17:08
学javaee的话是纯Java吗?会学HTML吗?前端后台一起学还是只学后台?
作者: Kevin_Ye    时间: 2016-10-7 19:27
楼主,厉害

作者: 梦想工程师    时间: 2016-10-7 19:39
好厉害啊
作者: 被冷气冻伤    时间: 2016-10-7 22:40
zhangchangzhi 发表于 2016-10-7 08:00
6666666666666666666666

555555555555555555555555
作者: 被冷气冻伤    时间: 2016-10-7 22:42
IceLoveInFire丶 发表于 2016-10-7 17:08
学javaee的话是纯Java吗?会学HTML吗?前端后台一起学还是只学后台?

这个我暂时还不知道啊,还没点招考试呢{:2_30:}
作者: 被冷气冻伤    时间: 2016-10-7 22:46
梦想工程师 发表于 2016-10-7 19:39
好厉害啊

哈哈哈,纯粹为了装一波
作者: 被冷气冻伤    时间: 2016-10-7 22:51
{:2_30:}  谢谢橘子哥




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2