3

我通常使用 GWT ClientBundle 在我的应用程序中管理我的图像,就像这样

@Source("icons/info.png")
ImageResource info();

不,我想切换到 .svg 图形,但我没有找到在像 SVGResource 之类的 ClientBundle 中使用 svg 的方法。我知道 GWT 支持 svg,并且有可能在 GWT 中插入这些图形,但我想利用 ClientBundle 的优势 + svg 的优势。有人已经解决了这个问题吗?

4

2 回答 2

14

ImageResource用于 GWT 编译器可以以一种或另一种方式优化的光栅图像,您可以查询它们的大小。

对于像 SVG 这样的矢量图像,您可以简单地使用DataResource带有@MimeType("image/svg+xml")注释的 a。

@Source("icons/info.svg")
@MimeType("image/svg+xml")
DataResource info();

请注意,您不能@spriteCssResourcethen 中使用 a,但您可以获取要在其中使用的资源 URL,例如background-imageusing @url
您也不能将资源传递给Image小部件,但是您可以将其传递给getSafeUri().


如果您想要 SVG 内容而不是将其用作图像 URL,则可以使用TextResource. 您必须将其作为setInnerHTML元素或setHTML小部件传递给浏览器才能对其进行解析。

于 2015-05-28T13:00:28.210 回答
3

LIB-GWT-SVG。它支持最新的 GWT 版本(2.7.0),看起来很成熟。

他们实现了与 UIBinder 的 SVG 集成,并添加了SVGResource类,您可以像 ImageResource 一样捆绑

@Source(...)
SVGResource bundledResource;
于 2015-05-28T12:58:18.767 回答