java填充多边形_JAVA绘制填充多边形输出文字保存成图片的示例

此代码示例展示了如何使用JAVA绘制并填充五边形,同时在图形上输出文字并保存为图片。通过指定不同顶点序号,可以生成不同形状的五边形,并用颜色进行区分。
摘要由CSDN通过智能技术生成

/**

* 生成五边形用的函数

* @param dstImg,输出图片文件名称

* @param v1,有效值为0-4

* @param v2,有效值为0-4

* @param v3,有效值为0-4

* @param v4,有效值为0-4

* @param v5,有效值为0-4

* 作者:wallimn

* 时间:2015-3-28

* 联系:54871876@qq.com

*/

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, PICTRUE_FORMATE_JPG, new File(dstImg));

} catch (IOException e) {

e.printStackTrace();

}

}

生成的图形如下图所示:

ec6c8acb53b4624823fbf11357bfb209.png

7510e5824cf0599751bfce5d0db0e3ba.png

大小: 19.9 KB

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2015-03-28 13:17

浏览 3440

评论

1 楼

xm_666

2018-02-24

谢谢,可以参考一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值