2012-07-26 64 views
3

我的问题非常简单并且非常简单。但希望我能有一个明确的答案。 我们可以通过多种方式创建GWT图像。GWT使用ImageResource创建图像

Image image = new Image ((ImageResource)imageRes); 

Image image = new Image ((ImageResource)imageRes.getSafeUri()); 

Image image = new Image(); 
image.setUrl((ImageResource)imageRes.getSafeUri().asString()); 

我的问题是:这3种方法之间使用ImageResouce创建一个新的图像有什么区别。首次装载哪个最好或更快?

谢谢

+0

为什么这个问题被低估?这对我来说是一个完全合法的问题。 – 2012-07-27 06:05:40

回答

4

首先,你不应该使用最后两个。

ImageResource技术上表示“sprited”图像内的区域:它具有指向精灵的URL和该图像上区域的坐标。在许多浏览器和大多数图像中,URL实际上是一个data: URL,该区域将代表整个图像。这可以使用@ImageOptions(preventInlining=true)或全球set-property在您的gwt.xml每个图像的基础上进行控制。换句话说,你的代码不应该依赖它,并且应该始终将ImageResource当作一个sprited图像中的一个区域。
仅供参考,实际使用spr图像的情况默认情况下适用于不支持data: URL的URL和适用于data: URL(所有浏览器)以内的图像太大的IE6/7。

然而,这正是你在最后两种情况下所做的:只使用ImageResource的URL,就好像它不是(可能)是一个spr图像。