Jakie są dokładne wymiary linii w JavaFX 2?
Zastanawiam się nad dokładną szerokością linii w JavaFX 2.1.
Tworzenie linii prostej rozpoczynającej się w punkcie (10; 10) i kończącej się w punkcie (20; 10) powinno mieć oczekiwaną szerokość 10 pikseli. Podczas odczytu szerokości linii zwracana jest wartość 11px. Podczas uruchamiania dołączonego przykładu i tworzenia zrzutu ekranu zobaczysz - przy wyższym poziomie powiększenia - linia ma szerokość 12 pikseli i wysokość 2 pikseli.
UżywaćLineBuilder
nie robi żadnej różnicy. Zdarzenie próbowałem zastosować innyStrokeType
bezskutecznie.
Tworzenie kwadratu o długości boku 10 zwraca oczekiwaną szerokość 10 pikseli.
Dlaczegoline.getBoundsInLocal().getWidth()
zwracać różne wartości z tych, które widzę w renderowanym wyniku (zrzut ekranu)?Dlaczego istnieje różnica dotycząca szerokości podczas tworzenia linii i wielokątów?Przykład:
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);
}
}