我正在使用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));
}
}
是否有一种使图像在拖动时不透明的方法,就像在窗格中时一样,还是有其他解决方法?