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

📄 polygonscalehandle.java

📁 JHotDraw学习过程中对数组的测试程序haha 学习过程中对数组的测试程序
💻 JAVA
字号:
/* * Sat Mar  1 09:06:09 1997  Doug Lea  (dl at gee) * Based on RadiusHandle */package CH.ifa.draw.contrib;import java.awt.*;import java.util.*;import java.io.IOException;import CH.ifa.draw.framework.*;import CH.ifa.draw.util.*;import CH.ifa.draw.standard.*;/** * A Handle to scale and rotate a PolygonFigure */class PolygonScaleHandle extends AbstractHandle {  private Point fOrigin = null;  private Point fCurrent = null;  private Polygon fOrigPoly = null;  public PolygonScaleHandle(PolygonFigure owner) {    super(owner); }  public void invokeStart(int  x, int  y, Drawing drawing) {    fOrigPoly = ((PolygonFigure)(owner())).getPolygon();    fOrigin = getOrigin();    fCurrent = new Point(fOrigin.x, fOrigin.y);  }  public void invokeStep (int dx, int dy, Drawing drawing) {    fCurrent = new Point(fOrigin.x + dx, fOrigin.y + dy);    ((PolygonFigure)(owner())).scaleRotate(fOrigin, fOrigPoly, fCurrent);  }  public void invokeEnd  (int dx, int dy, Drawing drawing) {    fOrigPoly = null;    fOrigin = null;    fCurrent = null;  }  public Point locate() {    if (fCurrent != null)      return fCurrent;    else      return getOrigin();  }  Point getOrigin() { // find a nice place to put handle    // Need to pick a place that will not overlap with point handle    // and is internal to polygon    // Try for one HANDLESIZE step away from outermost toward center    Point outer = ((PolygonFigure)(owner())).outermostPoint();    Point ctr = ((PolygonFigure)(owner())).center();    double len = Geom.length(outer.x, outer.y, ctr.x, ctr.y);    if (len == 0) // best we can do?      return new Point(outer.x - HANDLESIZE/2, outer.y + HANDLESIZE/2);    double u = HANDLESIZE / len;    if (u > 1.0) // best we can do?      return new Point((outer.x * 3 + ctr.x)/4, (outer.y * 3 + ctr.y)/4);    else      return new Point((int)(outer.x * (1.0 - u) + ctr.x * u),                       (int)(outer.y * (1.0 - u) + ctr.y * u));  }  public void draw(Graphics g) {    Rectangle r = displayBox();    g.setColor(Color.yellow);    g.fillOval(r.x, r.y, r.width, r.height);    g.setColor(Color.black);    g.drawOval(r.x, r.y, r.width, r.height);    /*     * for debugging ...    Point ctr = ((PolygonFigure)(owner())).center();    g.setColor(Color.blue);    g.fillOval(ctr.x, ctr.y, r.width, r.height);    g.setColor(Color.black);    g.drawOval(ctr.x, ctr.y, r.width, r.height);    */  }}

⌨️ 快捷键说明

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