SmallMapLabel.java
上传用户:njlgjx
上传日期:2022-08-07
资源大小:9105k
文件大小:2k
源码类别:

图形图象

开发平台:

Java

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package com.mwq.map.mwing;
  6. import com.mwq.map.tool.InstancePool;
  7. import com.mwq.map.tool.MapProcessor;
  8. import java.awt.Color;
  9. import java.awt.Graphics;
  10. import javax.swing.JLabel;
  11. /**
  12.  *
  13.  * @author Administrator
  14.  */
  15. public class SmallMapLabel extends JLabel {
  16.     private MapProcessor mapProcessor;
  17.     private float xScale;// 鹰眼漫游图的水平缩小比例
  18.     private float yScale;// 鹰眼漫游图的垂直缩小比例
  19.     @Override
  20.     protected void paintComponent(Graphics g) {
  21.         super.paintComponent(g);
  22.         if (mapProcessor == null) {
  23.             mapProcessor = InstancePool.getMapProcessor();
  24.             if (mapProcessor != null) {
  25.                 refreshScale();// 计算鹰眼漫游图的缩小比例
  26.                 drawRect(g);// 绘制矩形框
  27.             }
  28.         } else {
  29.             drawRect(g);// 绘制矩形框
  30.         }
  31.     }
  32.     public void refreshScale() {
  33.         xScale = 200f / mapProcessor.getMap().getWidth();// 计算鹰眼漫游图的水平缩小比例
  34.         yScale = 200f / mapProcessor.getMap().getHeight();// 计算鹰眼漫游图的垂直缩小比例
  35.     }
  36.     private void drawRect(Graphics g) {
  37.         int w = (int) (xScale * mapProcessor.getCutMapWidth());// 定义矩形宽度
  38.         int h = (int) (yScale * mapProcessor.getCutMapHeight());// 定义矩形高度
  39.         int x = (int) (xScale * mapProcessor.getShowCenterX()) - w / 2;// 定义水平轴的起始绘制坐标
  40.         int y = (int) (yScale * mapProcessor.getShowCenterY()) - h / 2;// 定义垂直轴的起始绘制坐标
  41.         // 验证水平坐标
  42.         if (x < 0) {
  43.             x = 0;
  44.         } else {
  45.             if (x + w == 200) {
  46.                 x -= 1;
  47.             }
  48.         }
  49.         // 验证垂直坐标
  50.         if (y < 0) {
  51.             y = 0;
  52.         } else {
  53.             if (y + h == 200) {
  54.                 y -= 1;
  55.             }
  56.         }
  57.         g.setColor(Color.RED);// 设置笔触颜色
  58.         g.drawRect(x, y, w, h);// 绘制矩形框
  59.     }
  60. }