近期在在项目中用到了Activiti做流程管理,在当前环节中要求画上边框,最出使用的是CSS或JS的方式做的,可是后来发现IMG标签大小变了后,或者弹出页里面的流程图不一致导致边框错位。IE6和IE其它版本中的圆角和兼容性还是有问题,于是我用Java原生Graphics2D的方式画上了边框,并增加了圆角。
现在将原代码公开,方便大家使用。
上个效果图:
代码如下:
/**
*
* <br/>Description:给Activiti绘制流程环节矩形框
* <p>Author:Eric Shi/史丙利</p>
* @param is
* @param response
* @param x
* @param y
* @param width
* @param height
* @throws FileNotFoundException
* @throws IOException
*/
public void drawRect(InputStream is,HttpServletResponse response,int x, int y, int width, int height) throws FileNotFoundException,IOException{
try{
BufferedImage buffImg = ImageIO.read(is);
Graphics2D g2d = buffImg.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(Color.red);
BasicStroke wideStroke = new BasicStroke(1.5f);
g2d.setStroke(wideStroke);
g2d.drawRoundRect(x,y,width,height,22,22);
ServletOutputStream sos=response.getOutputStream();
ImageIO.write(buffImg,"jpeg",response.getOutputStream());
sos.close();
sos.flush();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}