GWT画布和图像包[理解问题]

时间:2012-06-07 08:14:29

标签: image gwt canvas

我在http://code.google.com/p/gwt-examples/wiki/gwt_hmtl5使用了这段代码(一种教程)...在这段代码中,我使用了“Image Scale / Resize”代码,我发现了一些我无法解释的内容。我的意思是,而不是使用:

final Image img = new Image("/img/test.jpg");

我使用了客户端捆绑包,因此代码如下:

final Image img = new Image(NormalResources.NORMAL_RES_INSTANCE.axl1());

我没有任何错误,但图像没有出现。最后我找到了解决方案:

final Image img = new Image(NormalResources.NORMAL_RES_INSTANCE.axl1().getSafeUri());

您知道“.getSafeUri()”解决问题的原因吗?

1 个答案:

答案 0 :(得分:1)

请参阅ImageResource in ClientBundle as real <img> element

使用Image创建的ImageResource将无条件地使用剪裁的图片,其中图片被设置为CSS背景图片(以及<img>' s src是1×1px透明GIF)。因为图像实际上是一个空白的GIF,所以将它绘制到画布上并没有什么值得注意的; canvas不考虑CSS样式。

使用getSafeUri(),您将获得图片的data:网址,该网址将用作src的{​​{1}}。此处没有<img>,因此图像在画布上正确绘制。

但请注意,默认情况下,blank.gif在IE6和IE7中不会工作。如果您需要支持它们,则必须使用getSafeUri()ImageResource@ImageOptions(preventInlining = true)添加注释。或者,您可以使用@ImageOptions(repeatStyle = RepeatStyle.Both)代替DataResource s。