Прозрачность JavaFX Canvas для рисования - PullRequest
0 голосов
/ 27 ноября 2018

Можно ли установить более низкое значение для прямоугольника (или любой фигуры) на холсте 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 сохраняет прозрачность назначения.К сожалению, все альтернативные blendmodes утверждают, что используют одно и то же уравнение для альфы, как SRC_OVER.Похоже, что-то вроде blendmode «SUBTRACT» не существует.

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

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

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

...