Как сделать прозрачный SVG прозрачным в Java? - PullRequest
3 голосов
/ 30 августа 2011

У меня есть SVG-файл, который на самом деле пуст, у которого пока нет элемента.Я буду манипулировать им в коде Java, добавив элемент.Файл SVG будет вставлен в область прокрутки.Проблема даже в том, что файл SVG фактически пуст, область прокрутки не прозрачна, даже если я уже установил прозрачность.

Вот файл SVG (я получил его от клиента):

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
<svg version="1.1"
 baseProfile="full"
 xmlns="http://www.w3.org/2000/svg"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 xmlns:ev="http://www.w3.org/2001/xml-events">
 id="chart"
 width="1366px" height="768px" viewBox="0 0 1366 768" >
<defs>
   <!-- some template here -->
</defs>
</svg>

а здесь часть области прокрутки (canvasDiagram - это SVGCanvas).

// the instantiation part
canvasDiagram.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
canvasDiagram.setURI(getClass().getResource("path to svg file").toString());
scrollPane = new JScrollPane(canvasDiagram){
        {
            setOpaque(false);
            getViewport().setOpaque(false);
        }
    };

Панель прокрутки не прозрачная, а белая.Я попытался вставить содержимое панели прокрутки с прозрачным jPanel и его работой, поэтому я считаю, что белый контент из-за canvasDiagram.Можете ли вы помочь мне сделать пустую часть canvasDiagram действительно прозрачной?

1 Ответ

1 голос
/ 02 июня 2012

Я обнаружил, что установка фона с альфа-значением работает надежнее, чем установка isOpaque(false)

setBackground(new Color(0,0,0,0));
...