#java #image #drag-and-drop #javafx-8
#java #изображение #перетаскивание #javafx-8
Вопрос:
Я пытаюсь реализовать простую функцию перетаскивания в области сетки, и я хочу поместить изображение в качестве визуального представления текущего перетаскиваемого объекта.
Пока это работает хорошо, но как только изображение превышает определенный размер, оно становится размытым и обрезанным. Вы можете найти мою текущую реализацию ниже:
pane.setOnDragDetected(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
Dragboard db = pane.startDragAndDrop(TransferMode.ANY);
SnapshotParameters snapParams = new SnapshotParameters();
snapParams.setFill(Color.TRANSPARENT);
Image dragImage = pane.snapshot(snapParams, null);
ClipboardContent content = new ClipboardContent();
content.putImage(dragImage);
db.setContent(content);
event.consume();
}
});
Пока я перетаскиваю один из небольших объектов, изображение предварительного просмотра перетаскивания выглядит так, как показано ниже.
Но для большого объекта изображение предварительного просмотра выглядит следующим образом.
Кажется, что когда изображение больше определенного размера, этот визуальный эффект будет добавлен. Есть ли возможность отобразить изображение в его реальном размере? Возможно, я что-то пропустил в документации, если да, пожалуйста, дайте мне знать.
Комментарии:
1.
db.setDragView(dragImage)
Работает ли? (И почему у вас есть второй, кажущийся избыточным, вызовsnapshot()
?)2. Нет, это не работает, я тоже пробовал это раньше, но эффект тот же. Что касается второго избыточного вызова, я обновил ответ, это была просто ошибка в моем упрощенном примере кода.