用户svg图像在GWT ClientBundle(ImageBundle)

时间:2015-05-28 12:50:10

标签: java gwt svg clientbundle

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

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

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

2 个答案:

答案 0 :(得分:13)

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

对于像SVG这样的矢量图像,您只需使用带有DataResource注释的@MimeType("image/svg+xml")即可。

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

请注意,您无法在@sprite中使用CssResource,但您可以使用background-image @url来获取要使用的资源的网址。<登记/> 您也无法将资源传递到Image窗口小部件,但您可以通过其getSafeUri()

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

答案 1 :(得分:3)

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

他们实施了SVG integration with UIBinder并添加了SVGResource类,您可以像ImageResource一样捆绑

@Source(...)
SVGResource bundledResource;