GWT ClientBundle (ImageBundle) 中的用户 svg 图片

User svg images in GWT ClientBundle (ImageBundle)

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

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

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

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

他们实施了 SVG integration with UIBinder and added SVGResource class,您可以像 ImageResource 一样捆绑

@Source(...)
SVGResource bundledResource;

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

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

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

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


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