gpt4 book ai didi

javafx-2 - JavaFX 2 中线条的确切尺寸是多少?

转载 作者:行者123 更新时间:2023-12-04 04:22:48 26 4
gpt4 key购买 nike

我想知道 JavaFX 2.1 中线条的确切宽度。

创建一条从点 (10;10) 开始到点 (20;10) 结束的直线应具有 10 像素的预期宽度。当读取线条的宽度时,返回值 11px。当启动附加示例并制作屏幕截图时,您会看到 - 在更高的缩放级别 - 线条的宽度为 12 像素,高度为 2 像素。

使用 LineBuilder 没有任何区别。我曾尝试应用不同的 StrokeType 但没有成功。

创建边长为 10 的正方形会返回预期宽度 10 像素。

  1. 为什么 line.getBoundsInLocal().getWidth() 返回的值与我在渲染结果(屏幕截图)中看到的值不同?
  2. 为什么在创建线和多边形时宽度会有所不同?

示例:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Line;
import javafx.scene.shape.Polygon;
import javafx.stage.Stage;

public class ShapeWidthDemo extends Application {
@Override
public void start(Stage stage) throws Exception {
Group root = new Group();

int startX = 10;
int startY = 10;
int length = 10;

Line line = new Line(startX, startY, startX + length, startY);
System.out.println("line width: " + line.getBoundsInLocal().getWidth());
//->line width: 11.0
System.out.println("line height: " + line.getBoundsInLocal().getHeight());
//->line height: 1.0
root.getChildren().add(line);

int startY2 = startY + 2;

Polygon polygon = new Polygon(
startX, startY2,
startX + 10, startY2,
startX + 10, startY2 + 10,
startX, startY2 + 10);
System.out.println("polygon width: " + polygon.getBoundsInLocal().getWidth());
//->polygon width: 10.0
System.out.println("polygon height: " + polygon.getBoundsInLocal().getHeight());
//->polygon height: 10.0
root.getChildren().add(polygon);

stage.setScene(new Scene(root, 100, 100));
stage.show();
}

public static void main(String[] args) {
launch(args);
}
}

最佳答案

1) 直线的终点由StrokeLineCap控制。
因此,使用默认笔划宽度,您可以通过以下方式获得“所需”值

line.setStrokeType(StrokeType.CENTERED);
line.setStrokeLineCap(StrokeLineCap.BUTT);
... that the line has a width of 12px and a height of 2px.

如果应用了 StrokeType.OUTSIDE AND NOT StrokeLineCap.BUTT,您可以获得这些值。然而,即使更改笔划属性,高度仍保持在 2px。这很奇怪..

2) 这是因为多边形的描边值默认为NULL。通过将其设置为 polygon.setStroke(Color.RED); 笔划将呈现。

关于javafx-2 - JavaFX 2 中线条的确切尺寸是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11881834/

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