GWT Canvas2D绘制图像

时间:2012-04-03 20:30:16

标签: gwt canvas

/**
 * This is the entry point method.
 */
public void onModuleLoad() {
    Canvas canvas = Canvas.createIfSupported();
    final Context2d context2d = canvas.getContext2d();

    RootPanel.get("canvas").add(canvas);
    Image img = new Image("face.png");
    final ImageElement face = ImageElement.as(img.getElement());
    img.addLoadHandler(new LoadHandler() {

        @Override
        public void onLoad(LoadEvent event) {
            context2d.drawImage(face, 0, 0);
        }
    });
    //RootPanel.get("canvas").add(img);
}

这是我的代码。我想将图像绘制到画布上。 这适用于最后一行:

RootPanel.get( “画布”)添加(IMG);

未被注释掉。

但随着该行评论,似乎图像不会被加载。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

必须将图像小部件添加到页面以触发图像加载。只是让它不可见:

public void onModuleLoad() {    
    Canvas canvas = Canvas.createIfSupported();
    final Context2d context2d = canvas.getContext2d();

    RootPanel.get().add(canvas);
    Image img = new Image("face.png");
    final ImageElement face = ImageElement.as(img.getElement());
    img.addLoadHandler(new LoadHandler() {

        @Override
        public void onLoad(LoadEvent event) {
            context2d.drawImage(face, 0, 0);
        }
    });

    img.setVisible(false);
    RootPanel.get().add(img);
}        

答案 1 :(得分:3)

您是否已将图像放在WEB-INF文件夹中?这就是GWT从中加载图像的地方。通常建议创建一个“images”文件夹,以便您可以使用“images / face.png”加载它。

答案 2 :(得分:0)

您可以使用图片加载器,例如:http://code.google.com/p/google-web-toolkit-incubator/wiki/ImageLoader