gpt4 book ai didi

java - 无法在 Piccolo 2D 中拉伸(stretch)零矩形?

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

为什么下面的示例中没有出现第一个和第三个矩形?

看起来矩形一旦大小为零就被破坏了。

package tests.piccolo;

import org.piccolo2d.extras.PFrame;
import org.piccolo2d.nodes.PPath;

public class Try_EmptyRectangle {

public static void main(String[] args) {

new PFrame() {

@Override
public void initialize() {

PPath rect1 = PPath.createRectangle(0, 0, 0, 0);
PPath rect2 = PPath.createRectangle(0, 100, 1, 1);
PPath rect3 = PPath.createRectangle(0, 200, 1, 1);

getCanvas().getLayer().addChild(rect1);
getCanvas().getLayer().addChild(rect2);


rect1.setWidth(50);
rect1.setHeight(50);

rect2.setWidth(50);
rect2.setHeight(50);

rect3.setWidth(0);
rect3.setHeight(0);
rect3.setWidth(50);
rect3.setHeight(50);


}



};

}

}

最佳答案

这看起来像是一个错误。 PPath 内部包装了 GeneralPathPPath.createRectangle(0, 0, 0, 0)GeneralPath 初始化为零大小的矩形形状。然后更改 PPath 宽度/高度会触发边界更改。 PPath 重写 internalUpdateBounds() 以缩放路径以适应指定的边界。零大小路径似乎有问题:

protected void internalUpdateBounds(final double x, final double y, final double width, final double height) {
final Rectangle2D pathBounds = path.getBounds2D();
...
final double scaleX;
if (adjustedWidth == 0 || pathBounds.getWidth() == 0) {
scaleX = 1;
}
...
final double scaleY;
if (adjustedHeight == 0 || pathBounds.getHeight() == 0) {
scaleY = 1;
}
...
TEMP_TRANSFORM.scale(scaleX, scaleY);
...
path.transform(TEMP_TRANSFORM);
}

scaleXscaleY 始终为 1。因此,路径实际上从未缩放并且保持零大小。

关于java - 无法在 Piccolo 2D 中拉伸(stretch)零矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28410670/

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