Как вывести на канвас картинку (png), так чтоб поверх неё можно было рисовать? если можно пример.
Ответ
Должно работать следующее:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Main extends Application {
final static int CANVAS_WIDTH = 400;
final static int CANVAS_HEIGHT = 400;
Image bgImage;
double bgX, bgY, bgW = 100.0, bgH = 100.0;
@Override
public void start(final Stage primaryStage) {
final Canvas canvas = new Canvas(CANVAS_WIDTH, CANVAS_HEIGHT);
final GraphicsContext graphicsContext = canvas.getGraphicsContext2D();
initDraw(graphicsContext);
Group root = new Group();
VBox vBox = new VBox();
vBox.getChildren().addAll(canvas);
root.getChildren().add(vBox);
Scene scene = new Scene(root, 400, 425);
primaryStage.setTitle("image on canvas");
primaryStage.setScene(scene);
primaryStage.show();
}
private void initDraw(GraphicsContext gc){
double canvasWidth = gc.getCanvas().getWidth();
double canvasHeight = gc.getCanvas().getHeight();
// достаем нужную картинку по какому-то пути.
// в данном случае из папки с классами достаем accept.png
bgImage = new Image(getClass().getResourceAsStream("accept.png"));
bgX = canvasWidth/2 - bgW/2;
bgY = canvasHeight/2 - bgH/2;
gc.drawImage(bgImage, bgX, bgY, bgW, bgH);
}
public static void main(String[] args) {
launch(args);
}
}
Создаем сцену, добавляем канву. Добавляем картинку на graphicsContext. Картинку берем оттуда, откуда удобно и как удобно. В данном случае картинка accept.png лежит прямо в папке с файлом класса и отобразится прямо по центру.
Комментариев нет:
Отправить комментарий