【发布时间】:2015-03-11 08:48:57
【问题描述】:
所以我必须画一个菱形。不是静态钻石,而是我自己拖动和绘制的钻石。我已经使用通用路径来做到这一点,但它正在绘制一个不直的钻石;钻石向左弯曲,它没有被吸引到我的鼠标指向的地方。
这是我创建菱形的代码。有人可以帮我解决这个问题吗?
private GeneralPath drawDiamond(int x1, int y1, int x2, int y2){
int x = Math.min(x1, x2);
int y = Math.min(y1, y2);
// Gets the difference between the coordinates and
int width = Math.abs(x1 - x2);
int height = Math.abs(y1 - y2);
Rectangle2D.Double diamond = new Rectangle2D.Double(x1,y1,width,height);
GeneralPath connectedDiamond = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
connectedDiamond.append(diamond, true);
AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(20));
connectedDiamond.transform(at);
return connectedDiamond;
}
这是我的绘画方法:
public void paint(Graphics g) {
graphSettings = (Graphics2D) g;
graphSettings.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
graphSettings.setStroke(new BasicStroke(4));
Iterator<Color> strokeCounter = shapeStroke.iterator();
for (NamedShape s : shapes) {
graphSettings.draw(s.getShape());
}
if (drawStart != null && drawEnd != null) {
graphSettings.setComposite(AlphaComposite.getInstance(
AlphaComposite.SRC_OVER, 0.40f));
graphSettings.setPaint(Color.LIGHT_GRAY);
Shape aShape = null;
if(currentAction == 7){
aShape = drawDiamond(drawStart.x, drawStart.y, drawEnd.x, drawEnd.y);
}
graphSettings.draw(aShape);
}
}
有人可以帮我做这件事吗?
【问题讨论】:
-
不应该旋转90度吗?
-
@MadProgrammer 当我将它旋转到 90 度时,它根本没有被绘制。
-
@PieterDeBie 当我将角度设置为 45 度时,会绘制形状,但不会在我的鼠标位置绘制。我该如何解决>
-
您的轴心点是否在矩形的中心?
-
这可以解释我的意思:i.stack.imgur.com/KZ6Sc.png
标签: java arraylist geometry shape graphics2d