JavaFX拖动视图-不透明图像

时间:2018-07-15 09:12:52

标签: javafx drag-and-drop javafx-8

我正在使用JavaFX开发游戏,并且试图将由图像表示的游戏对象拖到板上(网格)。当我对其进行测试时,我意识到JavaFX使拖动视图图像透明,如您在此图片中所看到的:Drag View Sample(不包括光标)。

如您所见,在拖动图像时该图像是半透明的。我不希望这种效果出现在我的游戏中。我希望图像在拖动时就像在窗格上一样不透明。我找不到实现此目的的方法。这是我现在的代码(我仅实现了DragDetected处理程序,因为它负责设置数据的视觉表示):

public class Controller {
    private static final int SIZE = 8; // the size of the gridpane (it's a square)

    @FXML
    private GridPane gridPane;

    @FXML
    private ImageView image;

    @FXML
    void handleDragDetected(MouseEvent event) {
        Dragboard db = image.startDragAndDrop(TransferMode.MOVE);
        ClipboardContent content = new ClipboardContent();

        SnapshotParameters sp = new SnapshotParameters();
        sp.setFill(Color.TRANSPARENT);
        WritableImage view = image.snapshot(sp, null);
        db.setDragView(view, view.getWidth() / 2, view.getHeight() / 2); // disable transparency?

        content.putString("Test"); // I don't care about the data for now
        db.setContent(content);
        event.consume();
    }

    @FXML
    private void initialize() {
        // make sure the image fits to gridpane cell
        image.fitWidthProperty().bind(gridPane.widthProperty().divide(SIZE));
        image.fitHeightProperty().bind(gridPane.heightProperty().divide(SIZE));
    }
}

是否有一种使图像在拖动时不透明的方法,就像在窗格中时一样,还是有其他解决方法?

0 个答案:

没有答案