国庆节我们用代码画个国旗
来源:互联网 发布:matlab 矩阵的f范数 编辑:程序博客网 时间:2024/05/02 18:50
国庆闲的好无聊,不如就敲点代码庆祝祖国生日吧
代码附上:
package test;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import javax.swing.JFrame;
public class NationalFlag extends JFrame {
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 NationalFlag(){
setTitle("国旗 - by yuxiaoer");
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-sy);
g.fill(createPentacle(sx,sy,height*minR,theta));
}
}
/*
* 创建一个五角星形状,该五角星的中心坐标为(sx,sy),中心到顶点的距离为radius 其中某个顶点与中心连线的偏移角度
* 为theta(弧度)
*/
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) {
// TODO Auto-generated method stub
NationalFlag flag=new NationalFlag();
flag.setBounds(100,100,400,400);
flag.setVisible(true);
}
}
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import javax.swing.JFrame;
public class NationalFlag extends JFrame {
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 NationalFlag(){
setTitle("国旗 - by yuxiaoer");
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-sy);
g.fill(createPentacle(sx,sy,height*minR,theta));
}
}
/*
* 创建一个五角星形状,该五角星的中心坐标为(sx,sy),中心到顶点的距离为radius 其中某个顶点与中心连线的偏移角度
* 为theta(弧度)
*/
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) {
// TODO Auto-generated method stub
NationalFlag flag=new NationalFlag();
flag.setBounds(100,100,400,400);
flag.setVisible(true);
}
}
声明:
本文非原创引用自http://www.oschina.net/code/snippet_272789_14922 侵删
1 0
- 国庆节我们用代码画个国旗
- 国庆节,我们用代码来画个国旗~
- 国庆节java写一个国旗
- 德国国旗用代码实现
- 我们的国庆节
- 本来打算国庆节举行升国旗仪式,无奈搁浅了!
- 国庆节
- 国庆节
- 国庆节
- 国庆节
- 用PHP绘制国旗
- 用python的turtal模块画一个美国国旗
- 中国国旗图片生成代码-jsp版本
- 国庆绘国旗:用html5 canvas绘制国旗
- python 使用turtle画国旗
- 使用C++画中国国旗
- 今天是国庆节,顺便写了个端口扫描程序
- 国庆节发个"国庆直播"的小软件
- [jzoj 4812]【NOIP2016提高A组五校联考2】string
- 数组的格式化输出
- python 模块
- C++编程入门系列之八(函数的定义与调用)
- MVC 数据渲染
- 国庆节我们用代码画个国旗
- HDU 5914 Triangle(水题)
- HTTP基本原理(格式详解)
- noip2016联考第一场(1&2)总结
- mysql时间戳
- HTML和CSS学习日记之CSS布局模型
- C和指针读书笔记(第九章)
- hdu5533Dancing Stars on Me+凸包
- Codeforces 560A