Я создал объект JxImageView и установил для него изображение, теперь у меня есть белый цвет в качестве фона, которого нет в исходном изображении. Я просто хочу удалить белый цвет из окна просмотра.Как сделать прозрачный цвет фона изображения, отображаемого через jxImageview
ответ
После прочтения docs, я заключаю (поправьте меня, если я ошибаюсь), вы не можете изменить белый фон
В Застройщиком JxImageView, вы видите:
/** Creates a new instance of JXImageView */
public JXImageView() {
checkerPaint = ColorUtil.getCheckerPaint(Color.white,
new Color(250, 250, 250), 50);
setEditable(true);
}
и checkerPaint не может Доступен
Я не знаю JxImageView, но я не вижу, как это может изменить цвет фона изображения, потому что изображение не имеет цвета фона. Вероятно, это просто означает, что некоторые части изображения прозрачны, а белый цвет - цвет фона компонента, который отображает изображение: JxImageView
. Вероятно, вы должны изменить цвет фона JxImageView
на тот цвет, который вам подходит.
JxImageView также может быть прозрачным, и в этом случае вы увидите фон его родительского компонента.
Попробуйте загрузить изображение в редакторе изображений, чтобы убедиться, что изображение прозрачное.
Я подтвердил, что фон изображения прозрачный. Также я изменил цвет фона компонента, но это также не сработало. – Bijoy
Итак, мой ответ верный, но, к сожалению, ответ Аделя Бутроса также верен, и вы не сможете изменить фон JXImageView. Либо создайте свой собственный компонент, либо подкласс JXImageView и переопределите paintComponent, чтобы рисовать фон. Я бы отправил отчет об ошибках/эволюции в swingx, потому что я нахожу глупым неспособность установить фон такого компонента. –
@ Bjjoy определенно ошибка: JXImagePanel _is-a_ JXPanel и, как таковая, должен уважать произвольного художника-иллюстратора (вместо того, чтобы полностью обходить супер). Пожалуйста, напишите о проблеме в Tracker проблемы SwingX, поэтому мы не забудем ее исправить в следующий выпуск :-) – kleopatra
JXImageView bug исправлено в текущем снимке (кстати, post-SwingX 1.6.3, на всякий случай, если вы пропустили release announcement :) Чтобы заменить фон мозаики по умолчанию, просто установите пользовательскую фоновую маску r:
JXImageView ipa = new JXImageView();
ipa.setBackgroundPainter(new MattePainter(Color.RED));
Что такое JxImageView? Изменить: ах, [я вижу] (http://javadoc.geotoolkit.org/external/swingx/org/jdesktop/swingx/JXImageView.html). Позвольте мне добавить тег SwingX к вашему вопросу. –
Что делать, если вы вызываете setOpaque (false) в объекте JxImageView? –
setOpaque (false) не помогло. – Bijoy