У нас есть много кода Swing, который использует семантику графики для рисования, поэтому переход на иерархию JavaFX не является вариантом (было бы проще переписать собственный код /OpenGL). Мы хотели бы иметь поддержку PerspectiveTransform, и новый класс Canvas выглядит интересным.
Можно ли использовать эффект PerspectiveTransform с классом Canvas и применить его к элементам внутри?
Я знаю, что я могу, вероятно, применить перспективу ко всему холсту, но я бы хотел применить это только к нескольким элементам, которые я рисую (подобно тому, как применяется аффинное преобразование в Java2D).
PerspectiveTransform может применяться только к холсту в целом, а не к элементам внутри холста.
Эффект PerspectiveTransform работает на узле. Хотя сам холст является узлом, инструкции для рисования в сам холст не являются узлами.
Холст позволяет вам установить аффинное преобразование, которое будет применено к последующим инструкциям рисования для холста, но преобразование перспективы является неаффинным преобразованием, так что это вам не поможет.
Некоторые альтернативные варианты (которые могут или не могут хорошо работать для вашего случая):
Если вы заинтересованы в переносе кода с AWT/Swing Graphics2D на JavaFX GraphicsContext, может оказаться полезным следующий вопрос: Взаимодействие между Graphics2D и GraphicsContext.