public class DrawFlag { public static void main(java.lang.String[] args) throws java.io.IOException { DrawFlag.drawFlag(); } public static void drawFlag() throws java.io.IOException { java.awt.image.BufferedImage bufferedImage =
new java.awt.image.BufferedImage(420, 221, java.awt.image.BufferedImage.TYPE_INT_RGB); java.awt.Graphics gp = bufferedImage.getGraphics(); java.awt.Color color = new java.awt.Color(0); for (int i = 0; i < 13; i++) { if (i % 2 == 0) { color = new java.awt.Color(204, 0, 0); } else { color = new java.awt.Color(255, 255, 255); } gp.setColor(color); gp.fillRect(0, 17 * i, 420, 17); } color = new java.awt.Color(0, 0, 102); gp.setColor(color); gp.fillRect(0, 0, 168, 119); color = new java.awt.Color(255, 255, 255); gp.setColor(color); int left = 0; int top = 0; for (int i = 0; i < 9; i++) { top = (i + 1) * 12; if (i % 2 == 0) { left = -15; for (int j = 0; j < 6; j++) { left = left + 28; DrawFlag.DrawPentacle(gp, (double) left, (double) top, (double) 8, 0); } } else { left = -2; for (int j = 0; j < 5; j++) { left = left + 28; DrawFlag.DrawPentacle(gp, (double) left, (double) top, (double) 8, 0); } } } color = new java.awt.Color(0, 0, 0); gp.setColor(color); java.awt.Font font = new java.awt.Font("宋体", java.awt.Font.CENTER_BASELINE, 12); gp.setFont(font); gp.drawString("这些星好像有点怪", 300, 200); javax.imageio.ImageIO.write(bufferedImage, "jpg", new java.io.File("flag.jpg")); } public static void DrawPentacle(java.awt.Graphics gp, double x, double y, double r, int a) { int A; double R, X, Y; double[] _X = new double[11]; double[] _Y = new double[11]; int[] _x = new int[3]; int[] _y = new int[3]; a = a + 90; R =Math.sin(Math.toRadians((double) 18)) * r / Math.sin(Math.toRadians((double) 126)); for (int i = 0; i < 5; i++) { A = a + 72 * i; X = R * java.lang.Math.cos(java.lang.Math.toRadians((double) A)) + x; Y = R * java.lang.Math.sin(java.lang.Math.toRadians((double) A)) + y; _X[i * 2] = X; _Y[i * 2] = Y; A = a + 72 * i + 36; X = r * java.lang.Math.cos(java.lang.Math.toRadians((double) A)) + x; Y = r * java.lang.Math.sin(java.lang.Math.toRadians((double) A)) + y; _X[i * 2 + 1] = X; _Y[i * 2 + 1] = Y; } _X[10] = x; _Y[10] = y; for (int i = 0; i < 5; i++) { _x[0] = DrawFlag.round(_X[i * 2], 0); _x[1] = DrawFlag.round(_X[i * 2 + 1], 0); _x[2] = DrawFlag.round(_X[10], 0); _y[0] = DrawFlag.round(_Y[i * 2], 0); _y[1] = DrawFlag.round(_Y[i * 2 + 1], 0); _y[2] = DrawFlag.round(_Y [10], 0); gp.fillPolygon(_x, _y, 3); _x[0] = DrawFlag.round(_X[i * 2 + 1], 0); _x[1] = DrawFlag.round(_X[(i == 4) ? (0) : (i * 2 + 2)], 0); _x[2] = DrawFlag.round(_X[10], 0); _y[0] = DrawFlag.round(_Y[i * 2 + 1], 0); _y[1] = DrawFlag.round(_Y[(i == 4) ? (0) : (i * 2 + 2)], 0); _y[2] = DrawFlag.round(_Y[10], 0); gp.fillPolygon(_x, _y, 3); } } public static int round(double d, int scale) { if (scale < 0) { scale = 0; } java.math.BigDecimal b = new java.math.BigDecimal(java.lang.Double.toString(d)); java.math.BigDecimal one = new java.math.BigDecimal("1"); return b.divide(one, scale, java.math.BigDecimal.ROUND_HALF_UP).intValue(); } }
↑返回目录
前一篇: DAO 设计模式经典实例
后一篇: 模拟约索夫问题