package controller; import config.Config; import config.subConfig.AxisConfig; import config.subConfig.DoorConfig; import config.subConfig.TemplateConfig; import model.Axis; import model.Door; import model.ModuleInAxis; import model.Room; import utils.TemplateUtils; import utils.YmlUtils; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * @author duh * @create 2018/7/27 13:30 * @email duh@elab-plus.com **/ public class DrawImageController { private static Config config = YmlUtils.readYml(); /** * 画在panel中 */ public static void saveImage(List position) { AxisConfig axisConfig = config.getAxisPoint(); int length = axisConfig.getLength() + axisConfig.getX() + 500; int width = axisConfig.getY() + 500; BufferedImage bufferedImage = new BufferedImage(length, width, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = bufferedImage.createGraphics(); drawImageContent(position, g2d); try { ImageIO.write(bufferedImage, "jpeg", new File("E:\\config\\jpanel" + getImageNameByPosition(position) + ".jpg")); } catch (IOException e) { e.printStackTrace(); } } private static void drawImageContent(List position, Graphics g) { ModuleInAxis.setAxisPointConfig(config.getAxisPoint()); // drawAxis(config, g); Room room = new Room(config.getRoom()); drawRoom(room, g); drawImageTemplate(room, position, g); TemplateUtils.setTemplateIndex(0); } /** * 画坐标系 * * @param config * @param g */ private static void drawAxis(Config config, Graphics g) { Axis axis = new Axis(); AxisConfig axisConfig = config.getAxisPoint(); //ModuleInAxis已设置坐标轴的偏转 axis.setX(0); axis.setY(0); axis.setxLength(axisConfig.getLength()); axis.setyLength(axisConfig.getWidth()); axis.setxSpacing(axisConfig.getxSpacing()); axis.setySpacing(axisConfig.getySpacing()); // System.out.println("axis3 x="+axis.getX()); axis.drawSelf(g); } private static void drawRoom(Room room, Graphics g) { room.drawSelf(g); DoorConfig doorConfig = config.getDoor(); Door door = new Door(); door.setConfig(doorConfig); door.setRoom(room); door.drawSelf(g); } private static void drawImageTemplate(Room room, List position, Graphics g) { List templateList = config.getTemplates(); TemplateUtils.setRoom(room); TemplateUtils.drawTemplateWithArray(position, templateList, g); } private static String getImageNameByPosition(List position){ StringBuffer sb = new StringBuffer(); position.forEach(x->sb.append(x)); return sb.toString(); } public static void main(String[] args) { // List position = new ArrayList<>(); position.add(321); position.add(312); position.add(932); saveImage(position); } }