Browse Source

绘制门-基本ok

duh 6 years ago
parent
commit
daf492dae5

+ 10 - 0
src/main/java/config/subConfig/DoorConfig.java

@@ -14,6 +14,8 @@ public class DoorConfig {
     //阴影半径长度
     private int radis;
     private int openDir;
+    //门框超出部分
+    private int rightOutLength;
     private DoorShadowConfig doorShadow;
 
     public int getX() {
@@ -63,4 +65,12 @@ public class DoorConfig {
     public void setDoorShadow(DoorShadowConfig doorShadow) {
         this.doorShadow = doorShadow;
     }
+
+    public int getRightOutLength() {
+        return rightOutLength;
+    }
+
+    public void setRightOutLength(int rightOutLength) {
+        this.rightOutLength = rightOutLength;
+    }
 }

+ 10 - 0
src/main/java/constant/Constant.java

@@ -0,0 +1,10 @@
+package constant;
+
+/**
+ * @author duh
+ * @create 2018/7/19 16:14
+ * @email duh@elab-plus.com
+ **/
+public class Constant {
+    public static int CLOSE_WALL_LINE_WIDTH = 6;
+}

+ 5 - 5
src/main/java/controller/MyPanel.java

@@ -50,10 +50,10 @@ public class MyPanel extends JPanel{
         axis.setyLength(axisConfig.getWidth());
         axis.setxSpacing(axisConfig.getxSpacing());
         axis.setySpacing(axisConfig.getySpacing());
-        System.out.println("axis3 x="+axis.getX());
+//        System.out.println("axis3 x="+axis.getX());
         axis.drawSelf(g);
     }
-    private void drawTemplate(RoomConfig room, Graphics g) {
+    private void drawTemplate(Room room, Graphics g) {
         List<TemplateConfig> templateList = config.getTemplates();
         TemplateUtils.setRoom(room);
         for(TemplateConfig templateConfig : templateList){
@@ -66,9 +66,9 @@ public class MyPanel extends JPanel{
         DoorConfig doorConfig = config.getDoor();
         Door door = new Door();
         door.setConfig(doorConfig);
-        door.setRoom(config.getRoom());
+        door.setRoom(room);
         door.drawSelf(g);
-//        drawTemplate(templateConfig.getRoom(),g);
+//        drawTemplate(room,g);
     }
     /**
      * 1. 线段 / 折线
@@ -203,7 +203,7 @@ public class MyPanel extends JPanel{
         // 从本地读取一张图片
         String filepath = "xs.png";
         File file = new File(filepath);
-        System.out.println(file.getAbsolutePath());
+//        System.out.println(file.getAbsolutePath());
         Image image = Toolkit.getDefaultToolkit().getImage(filepath);
 
         // 绘制图片(如果宽高传的不是图片原本的宽高, 则图片将会适当缩放绘制)

+ 1 - 1
src/main/java/model/Axis.java

@@ -15,7 +15,7 @@ public class Axis  extends ModuleInAxis {
     private int spacingLength = 5;
     @Override
     public void drawSelf(Graphics g) {
-        System.out.println("begin to draw axis");
+//        System.out.println("begin to draw axis");
         Graphics2D g2d = (Graphics2D) g.create();
         g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         g2d.setColor(Color.RED);

+ 17 - 10
src/main/java/model/Door.java

@@ -2,6 +2,7 @@ package model;
 
 import config.subConfig.DoorConfig;
 import config.subConfig.RoomConfig;
+import constant.Constant;
 
 import java.awt.*;
 
@@ -12,7 +13,8 @@ import java.awt.*;
  **/
 public class Door extends ModuleInAxis {
     private DoorConfig config;
-    private RoomConfig room;
+    private Room room;
+
     @Override
     public void drawSelf(Graphics g) {
         if(null == room || null == config){
@@ -26,13 +28,20 @@ public class Door extends ModuleInAxis {
         Graphics2D g2d = (Graphics2D) g.create();
         g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
         g2d.setColor(Color.RED);
-        int x = room.getX()+config.getX();
-        int y = room.getY()+config.getY();
-        g2d.drawArc(x, y, config.getRadis(), config.getRadis(), 0, 90*config.getOpenDir());
+        int x = room.getX()+this.x;
+        int y = room.getY()+this.y;
+        System.out.println("room x="+room.getX()+",y="+room.getY()+",door x="+x+",y="+y);
+        g2d.drawString(x+","+y,x,y);
+        int radis = config.getRadis();
+        g2d.drawArc(x-radis/2, y-radis/2, radis, radis, 0, 90*config.getOpenDir());
         g2d.setColor(Color.GRAY);
         // 3. 填充一个扇形
-        g2d.fillArc(x, y, config.getRadis(), config.getRadis(), 0, 90*config.getOpenDir());
+        g2d.fillArc(x-radis/2, y-radis/2, radis, radis, 0, 90*config.getOpenDir());
         g2d.drawString(x+","+y,x-10,y+10);
+        //画贴墙边
+        int endx = this.x+radis/2+config.getRightOutLength();
+        System.out.println("fillRect length = " + endx);
+        g2d.fillRect(room.getX(),room.getY()- Constant.CLOSE_WALL_LINE_WIDTH/2,endx,Constant.CLOSE_WALL_LINE_WIDTH);
         g2d.dispose();
     }
 
@@ -43,13 +52,11 @@ public class Door extends ModuleInAxis {
 
     public void setConfig(DoorConfig config) {
         this.config = config;
+        x = config.getX();
+        y = config.getY();
     }
 
-    public RoomConfig getRoom() {
-        return room;
-    }
-
-    public void setRoom(RoomConfig room) {
+    public void setRoom(Room room) {
         this.room = room;
     }
 }

+ 2 - 2
src/main/java/model/ModuleInAxis.java

@@ -24,10 +24,10 @@ public abstract class ModuleInAxis {
      * 匹配坐标系
      */
     public void matchAxis(){
-        System.out.println("match before:"+x+","+y+",axis x="+axisPointConfig.getX()+",y="+axisPointConfig.getY());
+//        System.out.println("match before:"+x+","+y+",axis x="+axisPointConfig.getX()+",y="+axisPointConfig.getY());
         x += axisPointConfig.getX();
         y = axisPointConfig.getY()-y;
-        System.out.println("match end:"+x+","+y);
+//        System.out.println("match end:"+x+","+y);
     }
 
     public static AxisConfig getAxisPointConfig() {

+ 3 - 6
src/main/java/utils/TemplateUtils.java

@@ -4,6 +4,7 @@ import config.subConfig.AxisConfig;
 import config.subConfig.RoomConfig;
 import config.subConfig.TemplateConfig;
 import config.subConfig.TemplateShadowConfig;
+import model.Room;
 
 import java.awt.*;
 
@@ -13,7 +14,7 @@ import java.awt.*;
  * @email duh@elab-plus.com
  **/
 public class TemplateUtils {
-    private static RoomConfig room;
+    private static Room room;
     private static AxisConfig axisPointConfig;
 
     public static void drawTemplate(TemplateConfig template, Graphics g){
@@ -72,11 +73,7 @@ public class TemplateUtils {
         g2d.dispose();
     }
 
-    public static RoomConfig getRoom() {
-        return room;
-    }
-
-    public static void setRoom(RoomConfig room) {
+    public static void setRoom(Room room) {
         TemplateUtils.room = room;
     }
 

+ 2 - 1
src/main/java/utils/YmlUtils.java

@@ -23,7 +23,7 @@ public class YmlUtils {
             try {
                 Config templateConfig = yaml.loadAs(new FileInputStream(url.getFile()), Config.class);
                 Gson gson = new Gson();
-                System.out.println(gson.toJson(templateConfig));
+//                System.out.println(gson.toJson(templateConfig));
                 zoomLengthWidthXY(templateConfig);
                 System.out.println(gson.toJson(templateConfig));
                 return templateConfig;
@@ -81,6 +81,7 @@ public class YmlUtils {
         door.setX(door.getX()*enlarge/narrow);
         door.setY(door.getY()*enlarge/narrow);
         door.setRadis(door.getRadis()*enlarge/narrow);
+        door.setRightOutLength(door.getRightOutLength()*enlarge/narrow);
         DoorShadowConfig doorShadow = door.getDoorShadow();
         doorShadow.setRadis(doorShadow.getRadis()*enlarge/narrow);
     }

+ 3 - 1
src/main/resources/config.yml

@@ -1,5 +1,5 @@
 enlarge: 1
-narrow: 10
+narrow: 4
 axisPoint:
   x: 200
   y: 2100
@@ -15,10 +15,12 @@ room:
   y: 20
 #门
 door:
+  #相对于坐标轴接入点
   x: 100
   y: 0
   position: 1
   radis: 750
+  rightOutLength: 100
   #扇形1234象限
   openDir: 1
   doorShadow: