Я создаю небольшое приложение с JavaFX для визуализации плат.Приложение включает в себя возможность масштабирования и сдвига.Когда я отображаю небольшие тексты, они искажаются, как вы можете видеть на скриншотах ниже.Только когда я увеличил изображение до достаточной глубины, текст снова будет отображаться правильно.У кого-нибудь есть решение этой проблемы?Я включил пример кода, из которого сделаны снимки экрана.
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
addMouseEventHandler(root);
Pane pane1 = new Pane();
Text text1 = new Text(400, 400, "Text 1");
text1.setFont(new Font(5));
pane1.getChildren().addAll(text1);
root.getChildren().add(pane1);
primaryStage.setTitle("Text scaling problem");
primaryStage.setScene(new Scene(root, 800, 800));
primaryStage.show();
}
private void addMouseEventHandler(Pane root) {
// add scroll handling to zoom in and out
root.setOnScroll((event) ->
{
double factor = event.getDeltaY() > 0 ? 1.1 : 0.9;
root.setScaleX(root.getScaleX() * factor);
root.setScaleY(root.getScaleY() * factor);
});
// add drag handling
root.setOnMousePressed((mouseEvent) ->
{
startMouseX = mouseEvent.getSceneX();
startMouseY = mouseEvent.getSceneY();
startTranslationX = root.getTranslateX();
startTranslationY = root.getTranslateY();
});
root.setOnMouseDragged((mouseEvent) ->
{
double movedX = startMouseX - mouseEvent.getSceneX();
double movedY = startMouseY - mouseEvent.getSceneY();
double transX = startTranslationX - movedX;
double transY = startTranslationY - movedY;
root.setTranslateX(transX);
root.setTranslateY(transY);
});
}
правильный текст против искаженный текст
правильный текст прокручивается одинбольше шага, чем искаженный.