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