Возможно ли использовать JavaFX PerspectiveTransform с новым классом Canvas?

1

У нас есть много кода Swing, который использует семантику графики для рисования, поэтому переход на иерархию JavaFX не является вариантом (было бы проще переписать собственный код /​​OpenGL). Мы хотели бы иметь поддержку PerspectiveTransform, и новый класс Canvas выглядит интересным.

Можно ли использовать эффект PerspectiveTransform с классом Canvas и применить его к элементам внутри?

Я знаю, что я могу, вероятно, применить перспективу ко всему холсту, но я бы хотел применить это только к нескольким элементам, которые я рисую (подобно тому, как применяется аффинное преобразование в Java2D).

Теги:
javafx
javafx-8
swing
codenameone

1 ответ

1
Лучший ответ

PerspectiveTransform может применяться только к холсту в целом, а не к элементам внутри холста.

Эффект PerspectiveTransform работает на узле. Хотя сам холст является узлом, инструкции для рисования в сам холст не являются узлами.

Холст позволяет вам установить аффинное преобразование, которое будет применено к последующим инструкциям рисования для холста, но преобразование перспективы является неаффинным преобразованием, так что это вам не поможет.

Некоторые альтернативные варианты (которые могут или не могут хорошо работать для вашего случая):

  1. Многослойные элементы многослойного холста друг на друга, с различными эффектами преобразования перспективы, применяемыми к каждому слою (что является своего рода неубедительным). Oracle предоставляет образец наложения холста.
  2. Примените математику для преобразования перспективы на каждую из координат, которые вы хотите построить на своем холсте, прежде чем отправлять их на холст.
  3. Используйте истинную 3D-поверхность и координаты вместо искусственного 3D, предоставленного PerspectiveTransform, тогда JavaFX позаботится о выполнении правильных вычислений перспективного преобразования для вас. При необходимости 3D-поверхности могут быть помещены в SubScene, размещенную поверх холста или других узлов.

Если вы заинтересованы в переносе кода с AWT/Swing Graphics2D на JavaFX GraphicsContext, может оказаться полезным следующий вопрос: Взаимодействие между Graphics2D и GraphicsContext.

  • 0
    Спасибо, у нас уже есть некоторый FX-код для поддержки браузера и т. Д., Но основная графика в Java2d. Я думаю, нам придется перейти на OpenGL, а не на FX.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню