gpt4 book ai didi

java - Java 中颜色值的问题

转载 作者:行者123 更新时间:2023-12-01 11:28:02 26 4
gpt4 key购买 nike

我正在创建一个名为 Rectangle 的类,其中它有两个点(原始点和最后一个),它们由 FillRect() 和 DrawRect() 函数使用,这些函数由名为 Visible 的方法激活。矩形数据来自主java类,它们都是A点和B点的X和Y位置,加上轮廓颜色(color)和填充颜色(color2)。在类内部,我创建了一个名为 Distance 的方法(int 类型),它允许我计算两点之间的距离,给出高度和宽度值(都是 int),这样我就可以使用该值来绘制矩形正确。问题是,在某些情况下,我需要将高度和宽度值乘以 -1。即使它们都是 int 类型,但它错误地切换了 color 和 color2 值(例如 color = blue,color2 = red。在 *-1 之后,color = red,color2 = blue)。当然,当我不乘以-1时,这个错误就不会发生。

我做错了什么?为什么会这样切换?

查看代码:

public class Rectangle extends Figure {

protected Point p1, p2, p3, p4;
protected int height, width;


public Rectangle (int x1, int y1, int x2, int y2, Color cor, Color cor2) {
super(cor, cor2);

this.p1 = new Point (x1, y1, cor, cor2);
this.p2 = new Point (x1, y2, cor, cor2);
this.p3 = new Point (x2, y1, cor, cor2);
this.p4 = new Point (x2, y2, cor, cor2);
this.color = color;
this.color2 = color2;


if (x2 > x1 && y2 > y1) {
this.height = Distance(p1.getX(), p1.getY(), p3.getX(), p3.getY());
this.width = Distance(p1.getX(), p1.getY(), p2.getX(), p2.getY());
}//correct!

if (x2 < x1 && y2 < y1) {
this.height = -Distance(p1.getX(), p1.getY(), p3.getX(), p3.getY());
this.width = -Distance(p1.getX(), p1.getY(), p2.getX(), p2.getY());
}//switched color!

if (x2 > x1 && y2 < y1) {
this.height = Distance(p1.getX(), p1.getY(), p3.getX(), p3.getY());
this.width = -Distance(p1.getX(), p1.getY(), p2.getX(), p2.getY());
}//switched color!

if (x2 < x1 && y2 > y1) {
this.height = -Distance(p1.getX(), p1.getY(), p3.getX(), p3.getY());
this.width = Distance(p1.getX(), p1.getY(), p2.getX(), p2.getY());
}//switched color!

}

public void Visible(Graphics g) {

g.setColor(this.cor2);
g.fillRect(this.p1.getX(), this.p1.getY(), this.height, this.width);
g.setColor(this.cor);
g.drawRect(this.p1.getX(), this.p1.getY(), this.height, this.width);

}

private int Distance(int x1, int y1, int x2, int y2) {

int distance = (int) Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));

return distance;
}

最佳答案

it gets two ponits (the origin one and the final one),

我猜你不能保证第二点是从第一点开始的。该点可能位于上方,导致 y 值为负值,也可能位于左侧,导致负 x 值。

我建议您可以通过使用以下代码从两点创建一个矩形来简化代码:

int x = Math.min(startPoint.x, endPoint.x);
int y = Math.min(startPoint.y, endPoint.y);
int width = Math.abs(startPoint.x - endPoint.x);
int height = Math.abs(startPoint.y - endPoint.y);
Rectangle rectangle = new Rectangle(x, y, width, height);

现在您有了一个可供drawRect() 和fillRect() 方法使用的矩形。

顺便说一句,不要将您的类命名为 Rectangle,它是 JDK 中已定义的类。

关于java - Java 中颜色值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647719/

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