import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class Test { public static void main(String []args){ Test.pressFive("d:/generImage.png", 1, 0, 0, 0, 0); } /** * 生成五边形用的函数 * @param dstImg,输出图片文件名称 * @param v1,有效值为0-4 * @param v2,有效值为0-4 * @param v3,有效值为0-4 * @param v4,有效值为0-4 * @param v5,有效值为0-4 */ public final static void pressFive(String dstImg,int v1,int v2,int v3,int v4,int v5) { try { int picWidth=600,picHeight=600; BufferedImage bufferedImage = new BufferedImage(picWidth, picHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g = bufferedImage.createGraphics(); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1.0f)); //填充背景 g.setColor(new Color(255,255,255)); g.fillRect(0, 0, picWidth, picHeight); int min = 90,deta=20,mark=50; int [][]p1 = new int[5][2]; for(int i=0; i<5; i++){ p1[i][0]=picWidth/2; p1[i][1]=picHeight/2-min-deta*i; } int [][]px = new int[5][5]; //一维:五个角中的那个角,二维:从里到外0-4 int [][]py = new int[5][5]; double angle=0.0; //计算五个五边形的顶点。 for(int i=0; i<5; i++){ angle = 72*Math.PI*i/180; for(int j=0; j<5; j++){ px[i][j]=(int) Math.round(picWidth/2+(min+deta*j)*Math.sin(angle)); py[i][j]=(int) Math.round(picHeight/2-(min+deta*j)*Math.cos(angle)); } } //绘制五个五边形 g.setColor(new Color(128,128,128)); for(int i=0; i<5; i++){ g.drawPolygon(new int[]{px[0][i],px[1][i],px[2][i],px[3][i],px[4][i]}, new int[]{py[0][i],py[1][i],py[2][i],py[3][i],py[4][i]}, 5); } //绘制根据指定的顶点序号,绘制五边形 g.setColor(new Color(0,204,255)); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f)); g.fillPolygon(new int[]{px[0][v1],px[1][v2],px[2][v3],px[3][v4],px[4][v5]}, new int[]{py[0][v1],py[1][v2],py[2][v3],py[3][v4],py[4][v5]}, 5); //输出文字 g.setColor(new Color(16,16,16)); int fontsize=12; g.setFont(new Font("黑体",Font.PLAIN,fontsize)); String [] text = {"金","木","水","火","土"}; g.drawString(text[0]+"/"+(v1)*mark, px[0][4],py[0][4]-fontsize); g.drawString(text[1]+"/"+(v2)*mark, px[1][4],py[1][4]); g.drawString(text[2]+"/"+(v3)*mark, px[2][4],py[2][4]+fontsize); g.drawString(text[3]+"/"+(v4)*mark, px[3][4]-fontsize*7,py[3][4]); g.drawString(text[4]+"/"+(v5)*mark, px[4][4]-fontsize*7,py[4][4]); g.dispose(); //保存图片 ImageIO.write(bufferedImage, "JPG", new File(dstImg)); } catch (IOException e) { e.printStackTrace(); } } }
相关推荐
水印 java Graphics2D实现文字图片水印 实现水印四个角水印
Java中Graphics2D类的绘图属性.pdf 学习资料 复习资料 教学资源
Java中Graphics2D介绍.pdf 学习资料 复习资料 教学资源
Java中Graphics2D矩形实例.pdf 学习资料 复习资料 教学资源
Java中Graphics2D直线实例.pdf 学习资料 复习资料 教学资源
使用Java Graphics2D类生成心跳曲线坐标图,一般用于在服务器端生成坐标对数据图片,示例可以参考这里:https://blog.csdn.net/youxijishu/article/details/124545372?spm=1001.2014.3001.5502
Java中Graphics2D的几何图形类.pdf 学习资料 复习资料 教学资源
Computer Graphics Using Java 2D and 3D.chm 图形开发参考
主要介绍了Java中的Graphics2D类基本使用教程,Graphics2D类较之Graphics类中的功能更加专业,需要的朋友可以参考下
Java 2D API 程序员指南中文版
NULL 博文链接:https://981875739.iteye.com/blog/1431785
关于JAVA 2D的很多绘图方面的知识,有详细的程序示例,讲的很清楚,看后受益匪浅
java2d graphics源码,对于学习java图形编程是很好的入门。
学习java2d的首选,初学者入门书籍,收益匪浅!附带源码,你值得拥有
Introduction To Computer Graphics, Using Java 2D And 3D pdf书 + 全部源码。zip包。
VectorGraphics2D提供Java的Graphics2D接口的实现,并以各种矢量文件格式导出图形。 当前,支持以下矢量文件格式: 封装的PostScript:registered:(EPS) 可缩放矢量图形(SVG) 便携式文件格式(PDF) 可以...
Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.blue); g2d.drawRoundRect(0, 0, 150, 30, 10, 10); ...
C#中用Graphics输出指定字符间距的字符串
按照工具类要求把模块的要求参数传入和封装,把线条的参数要求和封装可以很成功的生成流程图样子
使用Java Graphics2D及相关类绘制复杂图形并输出图片文件到指定位置!