Swing和蜡染:从SVG文件创建ImageIcon?

简而言之,我正在寻找一种使用蜡染库从SVG文件制作ImageIcon的方法。我不想先将SVG光栅化到磁盘上,我只想能够将一个svg从jar文件中拉出并将其作为UI元素放置。

我觉得这应该相当容易,但是蜡染的javadocs并没有告诉我我需要知道的内容。

(为什么要使用蜡染呢?好吧,我们已经在使用它了,所以我们不必在合法的情况下运行另一个图书馆。)

回答:

这确实很容易,但不是很直观。

您需要扩展ImageTranscoder。在createImage方法中,您分配一个BufferedImage,将其缓存为成员变量,然后将其返回。该writeImage方法为空。而且您需要添加一个吸气剂来检索BufferedImage。

它看起来像这样:

    class MyTranscoder extends ImageTranscoder {

private BufferedImage image = null;

public BufferedImage createImage(int w, int h) {

image = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

return image;

}

public void writeImage(BufferedImage img, TranscoderOutput out) {

}

public BufferedImage getImage() {

return image;

}

}

现在,要创建图像,请创建转码器的实例,然后通过设置将其传递给所需的宽度和高度TranscodingHints。最后,您将代码从TranscoderInput转码为空目标。然后在代码转换器上调用getter来获取图像。

呼叫看起来像这样:

    MyTranscoder transcoder = new MyTranscoder();

TranscodingHints hints = new TranscodingHints();

hints.put(ImageTranscoder.KEY_WIDTH, width);

hints.put(ImageTranscoder.KEY_HEIGHT, height);

transcoder.setTranscodingHints(hints);

transcoder.transcode(new TranscoderInput(url), null);

BufferedImage image = transcoder.getImage();

简单吧?(是的,对。只花了我两个星期的时间就解决了。

以上是 Swing和蜡染:从SVG文件创建ImageIcon? 的全部内容, 来源链接: utcz.com/qa/420210.html

回到顶部