javagraphic2D矩形文字居中

那一课javagraphic2D矩形⽂字居中
要实现在地图上画N个⽅格,有⽂字并居中,颜⾊填充根据级别不⼀致,好久都没有做出来,请教了⽼⼤,终于搞定了,不多说,上代码:
/*
* 输出预报格⽹图
* width为图⽚宽度,height为输出图⽚⾼度,parameter为参数列表
* @see com.ffds.dispatching.situationAnalysis.service.SituationAnalysisService#getForecastGrid(int, int, java.util.HashMap)
*/
public BufferedImage getForecastGrid(int width,int height,HashMap<String,Object> parameters){
//设定底图初始范围
double minX =  vertMercatorX(1.257110322559409E7);
double minY =  vertMercatorY(2807811.819841969);
double maxX =  vertMercatorX(1.3293222258698823E7);
double maxY =  vertMercatorY(3529930.852*******);
//定义返回值
BufferedImage forecastGrid = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = ateGraphics();
forecastGrid = DeviceConfiguration().createCompatibleImage(width,height, Transparency.TRANSLUCENT);
g2d = ateGraphics();
List<HashMap<String,Object>> list = ForecastGrid(parameters);
double x = 0;
double y = 0;
double gridcellwidth = 0.277243;
滚动半径double gridcellheight = 0.225;
int[] rw = XYScreen(Double.(0).get("LONG_D").toString())-
gridcellwidth,Double.(0).get("LAT_D").toString())+gridcellheight, maxX, maxY, minX, minY, width,height);
int[] rb =
剑川白族调int recWidth = rb[0]-rw[0];
int recHeight = -rw[1]+rb[1];
FontMetrics fm = null;
真开心网int stringWidth=0;
int stringAscent = 0;
int stringDescent = 0;
for (int i = 0; i < list.size(); i++) {
x = Double.(i).get("LONG_D").toString());
y = Double.(i).get("LAT_D").toString());
int[] screenXY = XYScreen(x-gridcellwidth,y+gridcellheight, maxX, maxY, minX, minY, width,height);
//绘制边框
Rectangle2D r = new Rectangle2D.Double(screenXY[0],screenXY[1],recWidth,recHeight);
g2d.setColor(Color.BLACK);
g2d.draw(r);
//绘制⽂字,填充颜⾊
(i).get("RN").equals("")){
g2d.drawString("0", screenXY[0]+recWidth/2, screenXY[1]+recHeight/2);
}else{
double rn = Double.(i).get("RN").toString());
Color color = null;
if (rn>0 && rn<5) {
color = new Color(169,237,150);
} else if(rn > 5 && rn <= 10){燃烧着心中不灭的光
} else if(rn > 5 && rn <= 10){
color = new Color(58,188,52);
}else if(rn > 10 && rn <= 20){
color = new Color(65,161,212);
}else if(rn > 20 && rn <= 30){
color = new Color(57,189,221);
}else if(rn > 30 && rn <= 50){
color = new Color(6,0,254);
}else{
color = new Color(255,255,255);
}
g2d.setColor(color);
AlphaComposite ac = Instance(AlphaComposite.SRC_OVER, 0.5f);
g2d.setComposite(ac);
发展业务g2d.fillRect(screenXY[0]+1,screenXY[1]+1,recWidth-2,recHeight-2);
g2d.setColor(Color.BLACK);
fm = FontMetrics();
stringWidth = fm.stringWidth(String.valueOf(rn));
stringAscent = fm.getAscent();
stringDescent = fm.getDescent ();
g2d.drawString(String.valueOf(rn), screenXY[0]+recWidth/2-stringWidth / 2, screenXY[1]+recHeight/2+ (stringAscent -stringDescent) / 2);
}
}
return forecastGrid;
}
效果图如下:

本文发布于:2024-09-22 03:51:00,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/222507.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:填充   输出   居中
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议