📄 trianglerotationhandle.java
字号:
/* * Sun Mar 2 19:15:28 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 rotate a TriangleFigure */class TriangleRotationHandle extends AbstractHandle { private Point fOrigin = null; private Point fCenter = null; public TriangleRotationHandle(TriangleFigure owner) { super(owner); } public void invokeStart(int x, int y, Drawing drawing) { fCenter = owner().center(); fOrigin = getOrigin(); } public void invokeStep (int dx, int dy, Drawing drawing) { double angle = Math.atan2(fOrigin.y + dy - fCenter.y, fOrigin.x + dx - fCenter.x); ((TriangleFigure)(owner())).rotate(angle); } public void invokeEnd (int dx, int dy, Drawing drawing) { fOrigin = null; fCenter = null; } public Point locate() { return getOrigin(); } Point getOrigin() { // find a nice place to put handle // almost same code as PolygonScaleHandle Polygon p = ((TriangleFigure)(owner())).polygon(); Point first = new Point(p.xpoints[0], p.ypoints[0]); Point ctr = owner().center(); double len = Geom.length(first.x, first.y, ctr.x, ctr.y); if (len == 0) // best we can do? return new Point(first.x - HANDLESIZE/2, first.y + HANDLESIZE/2); double u = HANDLESIZE / len; if (u > 1.0) // best we can do? return new Point((first.x * 3 + ctr.x)/4, (first.y * 3 + ctr.y)/4); else return new Point((int)(first.x * (1.0 - u) + ctr.x * u), (int)(first.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); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -