JavaFX Canvas "рисует" прозрачность

Можно ли установить более низкое значение для прямоугольника (или любой формы) на холсте JFX после того, как он был ранее нарисован с более высокой альфа?

Например

gc.setFill(Color.BLACK)
gc.fillRoundRect(0, 0, 30, 30, 2, 2);
// Next command shall set transparency
gc.setFill(Color.TRANSPARENT)
gc.fillRoundRect(10, 10, 10, 10, 2, 2);

Это должно нарисовать круглое прямолинейное "отверстие" в прозрачном холсте.

Очевидно, это не так. Рисование с помощью TRANSPARENT не имеет никакого эффекта, поскольку режим смешивания по умолчанию SRC_OVER сохраняет прозрачность назначения. К сожалению, все альтернативные смешанные режимы утверждают, что используют такое же уравнение для альфы, как SRC_OVER. Что-то вроде blendmode "SUBTRACT" не существует.

Есть ли способ достичь того, что я хотел бы напрямую?

Я имею в виду без рисования линий, выглядящих как границы отверстия и без использования setLineWidth. Я хотел бы использовать это с гораздо более сложными формами, поэтому clearRect() также слишком ограничивает...

Огромное спасибо заранее!

0 ответов

Другие вопросы по тегам