我想知道 JavaFX 2.1 中线条的确切宽度。
创建从点 (10;10) 到点 (20;10) 的直线的预期宽度应为 10 像素。当读取线的宽度时,会返回 11px 的值。当开始附加的示例并制作屏幕截图时,您会看到 - 在更高的缩放级别 - 线条的宽度为 12 像素,高度为 2 像素。
使用 aLineBuilder
没有任何区别。我试图应用不同的方法StrokeType
但没有成功。
创建一个边长为 10 的正方形会返回 10px 的预期宽度。
- 为什么
line.getBoundsInLocal().getWidth()
返回的值与我在渲染结果(屏幕截图)中看到的不同? - 为什么在创建线和多边形时宽度会有所不同?
例子:
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);
}
}