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

📄 myline.java~60~

📁 Java画版程序。......................要求变态。
💻 JAVA~60~
字号:
package myshape;/** * Title: * Description: * Copyright:    Copyright (c) 2002 * Company: * @author * @version 1.0 */import java.awt.*;import myframe.*;public class MyLine extends  MyShapeAdapter{ private MyPoint startPoint,endPoint; //private int radius; public MyLine(){ } public MyLine(MyPoint start,MyPoint end){ startPoint=start; endPoint=end; } private Color color=defaultColor; public  void setColor(Color c){   color=c; } public void paint(Graphics g){  int x1,y1,x2,y2;  double[] x=new double[4];  double y[]=new double[4];  int width=DrawCavans.width;  int height=DrawCavans.height; //startPoint.paint(g); //endPoint.paint(g);    x1=endPoint.getX();    y1=endPoint.getY();    if(endPoint.getX()==startPoint.getX()){     y[0]=0;x[1]=x[0]=endPoint.getX();y[1]=height;x[2]=x[3]=-1;    }    else if(endPoint.getY()==startPoint.getY()){     x[0]=0;y[1]=y[0]=endPoint.getY();x[1]=width;x[2]=x[3]=-1;    }    else{       double tan=(y1-startPoint.getY())*1.0/(x1-startPoint.getX());       x[0]=x1-y1/tan;       y[0]=0;       x[1]=width;       y[1]=y1+tan*(x[1]-x1);       y[2]=height;       x[2]=x1+(y[2]-y1)*1.0/tan;       x[3]=0;       y[3]=y1-tan*x1;   }   int a[]=new int[4];   int j=0;  for(int i=0;i<4;i++){  // System.out.println("x=   "+x[i]+"  y= "+y[i]);    if(x[i]>=0 && x[i]<width+1 && y[i]>=0 && y[i]<height+1){      a[j++]=i;    }  }   g.setColor(color);   g.drawLine((int)x[a[0]],(int)y[a[0]],(int)x[a[1]],(int)y[a[1]]); }  public MyShape getShape(){//深度的克隆   MyLine line1=(MyLine)this.clone();   line1.startPoint=(MyPoint)startPoint.clone();   line1.endPoint=(MyPoint)endPoint.clone();   //MyLine l=(MyLine)this.clone();   //l.startPoint.moveObject(startPoint.getX()+4,centerPoint.getY()+4);   //l.endPoint.moveObject(endPoint.getX()+4,endPoint.getY()+4);   return line1; } public void moveObject(int x,int y){   if(movedPoint!=null){      if(!moveLine){       //movedPoint.moveObject(x,y);      }      else{        int tempx=x-movedPoint.getX();        int tempy=y-movedPoint.getY();        movedPoint=new MyPoint(x,y);        startPoint.moveObject(tempx+startPoint.getX(),tempy+startPoint.getY());        endPoint.moveObject(tempx+endPoint.getX(),tempy+endPoint.getY());      }   } } public void moveObject(MyShape s,int x,int y){   MyPoint p1=(MyPoint)s;   int tempx=startPoint.getX()-endPoint.getX();   int tempy=startPoint.getY()-endPoint.getY();   if(tempx==0){    p1.moveObject(startPoint.getX(),y);   }   else if(tempy==0){    p1.moveObject(x,startPoint.getY());   }   else{    double k1=tempy*1.0/tempx;    double k2=-1/k;    double temp1=startPoint.getY()-k1*startPoint.getX();    double temp2=y-k2*x;    p1.moveObject((int)((temp1-temp2)/(k2-k1)),(int)((k2*temp1-k1*temp2)/(k2-k1)));   } } private MyPoint movedPoint; private boolean moveLine=true; public boolean getChanged(){return !moveLine;} public boolean nearTo(int x,int y){ //centerPoint.attachToOthers=false;  movedPoint=null;  if(startPoint.nearTo(x,y)){   //  centerPoint.attachToOthers=true;    // movedPoint=startPoint;     moveLine=false;     return false;  }  if(endPoint.nearTo(x,y)){     //movedPoint=endPoint;     moveLine=false;     return false;  }  //centerPoint.attachToOthers=true;  int tempx=(startPoint.getX()-x)*(endPoint.getY()-y);  int tempy=(startPoint.getY()-y)*(endPoint.getX()-x);  tempx=(int)Math.sqrt(Math.abs(tempx-tempy)); // System.out.print("OK  "+tempx);  if(tempx<20){     movedPoint=new MyPoint(x,y);     moveLine=true;     return true;  }  return false; } public String toString(){   String s="直线 ";   return s;  } public MyPoint getPoint(){   return movedPoint; }}

⌨️ 快捷键说明

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