Как сделать фон диаграммы Vaadin прозрачным при преобразовании в PNG?

Я использую код преобразования Batik, как предлагает Vaadin однако мне нужно сделать фон изображения PNG прозрачным, потому что он может отображаться в контейнерах разных цветов, и я не хочу, чтобы отображалась белая рамка. Я перепробовал все, что мог придумать, и не могу найти способ сделать фон PNG прозрачным. Я даже пытался заставить цвет фона помочь батику, но это не сработало:

chart.getConfiguration().getChart().setBackgroundColor(new SolidColor("#FFFFFF"));

Затем я пробовал комбинации (одну или обе):

pngTranscoder.addTranscodingHint(PNGTranscoder.KEY_FORCE_TRANSPARENT_WHITE, Boolean.TRUE);
pngTranscoder.addTranscodingHint(PNGTranscoder.KEY_BACKGROUND_COLOR, java.awt.Color.WHITE);

И ничего не работает. Любые предложения о том, как это сделать, будут очень признательны.


person Stephane Grenier    schedule 20.11.2017    source источник
comment
Вы пробовали new SolidColor(255, 255, 255, 0.0) - последнее значение Альфа, непрозрачность, где 1,0 будет полностью непрозрачным, 0,0 полностью прозрачным. Или new Color(0x00FFFFFF, true)   -  person Joop Eggen    schedule 20.11.2017
comment
По-видимому, я имел дело с двумя проблемами. Да, это определенно помогло. Также важно указать, что код pngTranscoder должен быть удален. Если вы хотите ответить на вопрос, я приму ваш ответ   -  person Stephane Grenier    schedule 20.11.2017


Ответы (1)


В наборе два цвета:

new SolidColor(255, 255, 255, 0.0)

последнее — это значение Alpha, непрозрачность, где 1.0 будет полностью непрозрачным, а 0.0 — полностью прозрачным.

И настоящий цвет:

new Color(0x00FFFFFF, true)

с конструктором для RGBA.

person Joop Eggen    schedule 20.11.2017
comment
придирки: так это ARGB? - person cfrick; 20.11.2017
comment
@cfrick :) java API и javadoc также не очень согласованы; в цвете упоминание из rgba. С прямым порядком байтов это будет bgra. - person Joop Eggen; 20.11.2017