У меня есть холст и графический текст на нем.Я использую clearRect (), чтобы удалить несколько пикселей из изображения, загруженного на холст.Я должен иметь возможность увеличивать и уменьшать масштаб и панорамировать мое изображение.Я поместил свой холст в область прокрутки, чтобы я мог перемещаться по нему.Мне нужно уметь масштабировать с помощью прокрутки мыши.
Я пытался изменить размер холста, но при этом мне пришлось перерисовывать изображение, чтобы изменения были потеряны!
FXML:
<ScrollPane pannable="true" prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: green;" BorderPane.alignment="CENTER">
<content>
<Canvas fx:id="imageCanvas" height="425.0" width="564.0">
<cursor>
<Cursor fx:constant="OPEN_HAND" />
</cursor>
</Canvas>
</content>
</ScrollPane>
Контроллер:
imageCanvas.addEventHandler(MouseEvent.MOUSE_DRAGGED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
if (e.getButton() == MouseButton.PRIMARY) {
System.out.println(e.getX() + " " + e.getY());
gc.drawImage(
source,
(e.getX() - 25) * source.getWidth() / imageCanvas.getWidth(),
(e.getY() - 25) * source.getHeight() / imageCanvas.getHeight(),
50 * source.getWidth() / imageCanvas.getWidth(),
50 * source.getHeight() / imageCanvas.getHeight(),
e.getX() - 25,
e.getY() - 25,
50,
50
);
} else if (e.getButton() == MouseButton.SECONDARY) {
gc.clearRect(e.getX() - 50, e.getY() - 50, 100, 100);
}
}
});