Самая сложная форма, поддерживаемая Java2D API, - это сегмент Безье. Предположим, что я хочу нарисовать рациональный сегмент (каждая контрольная точка имеет вес, а вся формула рендеринга несколько отличается).Как нарисовать абсолютно обычную форму в Java?
Как это осуществить?
Можно ли расширить движок рендеринга, чтобы иметь возможность рисовать более сложные фигуры?
UPDATE
Обычный способ реализации пользовательских формы реализует Shape
интерфейс. Этот интерфейс имеет ключевые методы для возврата PathIterator
, а PathIterator
выполняет итерации по типам сегментов. Существует только 5 сегментов. Самый искривленный из них - SEG_CUBICTO
, который является стандартной кривой Безье с 4 контрольными точками (включая 2 для начала и конца).
Если я применяю линейное дробное преобразование к кривой Безье, каждая контрольная точка получает вес, как дополнение к его координатам, а кривая Безье превращается в NURBS (не уверенный в этом, не смог узнать точную терминологию). Во всяком случае, формула кривой отличается от Безье.
Я не эксперт по java2d, но на основе javadocs все фигуры реализуют интерфейс 'Shape', поэтому я мог бы сказать, что это путь, если вы хотите что-то сложное и выполненное на заказ – user902383
Да, но' Shape' возвращает ' PathIterator', в то время как 'PathIterator' возвращает только фиксированное количество сегментов, наиболее сложным из которых является' SEG_CUBICTO' http://docs.oracle.com/javase/7/docs/api/java/awt/geom/PathIterator .html # SEG_CUBICTO –
взгляните на этот пример, может быть, это даст вам некоторые идеи. http://82.157.70.109/mirrorbooks/javaexamples/0596006209_jenut3-chp-12-sect-12.html – user902383