gpt4 book ai didi

java - 在模糊的位置绘制形状

转载 作者:行者123 更新时间:2023-11-30 06:52:39 25 4
gpt4 key购买 nike

这是一个非常奇怪的错误,我似乎无法弄清楚。为了简化这一点,我有三个类:一个 Canvas 类(它使用 Graphics2D.draw() 绘制对象),然后是许多 ob 家具类,它们可以被视为一个类,因为它们所做的只是返回不同的值形状。最后,我有一个 CustomShape 类,它允许我根据现有的其他形状创建一个新的形状。但这些形状是在奇怪的地方绘制的。 x 和 y 坐标与绘制形状的位置不匹配。

壁橱.java:

public class Closet {
double x, y, width, height, rotation;
Color color;
Closet() {
this.x = X;
this.y = Y;
this.width = 40;
this.height = 40;
this.rotation = 0;
this.color = Color.blue;
}

public Shape getShape() {
GeneralPath closetShape = new GeneralPath();
closetShape.append(new Rectangle2D.Double(0, 0, width, height), false);
closetShape.moveTo(0 , 0);
closetShape.lineTo(width, height);
closetShape.moveTo(0, height);
closetShape.lineTo(width, 0);
// transform:

AffineTransform t = new AffineTransform();
t.translate(x, y);
Rectangle2D umriss = closetShape.getBounds2D();
t.rotate(Math.toRadians(rotation),umriss.getX()+umriss.getWidth()/2,umriss.getY()+umriss.getHeight()/2);
return t.createTransformedShape(closetShape);
}
}

自定义形状.java

public class CustomShape  {
double x, y, width, height, rotation;
Color color;
private Closet[] c;
CustomShape(Closet... elements) {
this.m = elements;
GeneralPath path = new GeneralPath();
Closet[] newC = elements.clone();
Arrays.stream(newC).forEach(e -> path.append(e.getShape(), false));
this.x = path.getBounds2D().getX();
this.y = path.getBounds2D().getY();
this.width = path.getBounds2D().getWidth();
this.height = path.getBounds2D().getHeight();
this.rotation = 0;
this.color = Color.blue;
}

public Shape getShape() {
GeneralPath path = new GeneralPath();
Arrays.stream(c).forEach(e -> path.append(e.getShape(), false));
AffineTransform t = new AffineTransform();
t.translate(x, y);
Rectangle2D umriss = path.getBounds2D();
t.rotate(Math.toRadians(rotation),umriss.getX()+umriss.getWidth()/2,umriss.getY()+umriss.getHeight()/2);
return t.createTransformedShape(path);
}
}

最佳答案

我找到了解决方案:在将这些形状添加到 CustomShape 之前,我已经对其进行了转换。这就是 x 和 y 坐标错误的原因。

关于java - 在模糊的位置绘制形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com