⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 panel1.java

📁 Java灵感编程1-101之61-80
💻 JAVA
字号:
package drawimage;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.*;import java.awt.geom.*;/** * <p>Title: Draw Image Demo</p> * <p>Description: This is a Draw Image demo</p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: d6-125</p> * @author Liujun * @version 1.0 */public class Panel1 extends JPanel {  BorderLayout borderLayout1 = new BorderLayout();    //在此添加自己的变量    int n = 2;//一个图像有两个控制点    int current = -1;//当前的控制点    static   double SIZE = 12.0;//控制点大小    Point2D []   points = new Point2D[2];//两个控制点    String FileName=null;//图像文件名称    Image myImage=null;//图像变量  public Panel1() {    try {      jbInit();    }    catch(Exception ex) {      ex.printStackTrace();    }  }  void jbInit() throws Exception {    this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {      public void mouseDragged(MouseEvent e) {        this_mouseDragged(e);      }    });    this.addMouseListener(new java.awt.event.MouseAdapter() {      public void mousePressed(MouseEvent e) {        this_mousePressed(e);      }      public void mouseReleased(MouseEvent e) {        this_mouseReleased(e);      }    });    this.setLayout(borderLayout1);      //add code here    //产生两个初始的点,用于放置图像    points[0] = new Point2D.Double(10.0, 60.0);    points[1] = new Point2D.Double(200.0, 200.0); } void SetFileName(String s){   FileName=s;  if(FileName!=null){     myImage = Toolkit.getDefaultToolkit().getImage(FileName);    }  repaint(); }  protected void paintComponent(Graphics g) {    /**@todo: Override this javax.swing.JComponent method*/    super.paintComponent( g);       if (points == null) return;      if(myImage==null) return;      Graphics2D g2 = (Graphics2D)g;//使用Java 2D      for (int i = 0; i < n; i++)//画控制点      {  double x = points[i].getX() - SIZE / 2;         double y = points[i].getY() - SIZE / 2;         g2.fill(new Rectangle2D.Double(x, y, SIZE, SIZE));      }      //计算高度和宽度     int width = (int)Math.abs(points[1].getX() - points[0].getX());     int height = (int)Math.abs(points[1].getY() - points[0].getY());     g2.drawImage(myImage,(int)points[0].getX(),(int)points[0].getY(),                     width,height,this);//绘制图像   }  void this_mousePressed(MouseEvent e) {    Point p = e.getPoint();      for (int i = 0; i < n; i++)      {  double x = points[i].getX() - SIZE / 2;         double y = points[i].getY() - SIZE / 2;         Rectangle2D r = new Rectangle2D.Double(x, y, SIZE, SIZE);         if (r.contains(p))//判断当前鼠标位置是否在控制点上         {  current = i;//如果是,则设current为当前点            return;         }      }  }  void this_mouseReleased(MouseEvent e) {   current = -1;//鼠标被释放  }  void this_mouseDragged(MouseEvent e) {     if (current == -1) return;//如果鼠标没有按下,则返回      points[current] = e.getPoint();//设置当前点为鼠标的位置      this.repaint();//重绘图形  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -