📄 polygon.java
字号:
/**
* Created by LHand on May 19th 2007 00:10
* derect extends from IShape , a lonely class for PolyGon
*/
package cn.edu.xmu.LHand;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.event.MouseEvent;
public class Polygon extends IShape{
protected Color color;
protected float stroke;
protected PointSet pointSet;
protected int currentX;
protected int currentY;
protected int endX;
protected int endY;
public Polygon(Color colors, float stroke, int x, int y){
pointSet = new PointSet();
color = colors;
this.stroke = stroke;
currentX = x;
currentY = y;
pointSet.addPoint(currentX, currentY);
}
public void mousePressed(MouseEvent event){
endX = event.getX();
endY = event.getY();
}
public void mouseDragged(MouseEvent event){
endX = event.getX();
endY = event.getY();
}
public void mouseReleased(MouseEvent event){
currentX = event.getX();
currentY = event.getY();
pointSet.addPoint(currentX, currentY);
}
public void draw(Graphics2D g2D){
g2D.setStroke(new BasicStroke(stroke));
g2D.setColor(color);
int[][] point = pointSet.getPoints();
if(point == null)
return;
int size = point[0].length;
if(true){
if(size>=2){
//判断最后是不是双击了鼠标或者最后滴点和第一个点重合
//素滴话画的是一个封闭的多边形 -。=
//当图形已经封闭的时候,就结束该次画图,currentShape置空
if(Math.abs(point[0][size-1]- point[0][0]) <= 1 &&
Math.abs(point[1][size-1]- point[1][0]) <= 1)
{
g2D.drawPolygon(point[0], point[1], size);
DrawBoard.currentShape = null;
return;
}
//ms这段不能执行 。。。May 19th 10:57
if(Math.abs(point[0][size-1]-point[0][size-2]) <= 1 &&
Math.abs(point[1][size-1]-point[1][size-2]) <= 1){
g2D.drawPolygon(point[0], point[1], size);
DrawBoard.currentShape = null;
return;
}
}
g2D.drawLine(currentX, currentY, endX, endY);
g2D.drawPolyline(point[0], point[1], size);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -