GWT Canvas2D 绘制图像

标签 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);
}

这是我的代码。我想将图像绘制到 Canvas 上。
如果最后一行,这有效:

RootPanel.get("canvas").add(img);

没有注释掉。

但是随着注释的行,似乎图像不会被加载左右。有任何想法吗?

最佳答案

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

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);
}        

关于GWT Canvas2D 绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10000921/

相关文章:

java - SmartGWT ListGrid - 从选择中排除字段

java - GWT 客户端中的静态类、方法和字段

eclipse - 为什么 GWT Web 应用程序在端口 8888 而不是 8080 中打开

javascript - 如何使用 Javascript 在 Canvas 上绘制 SVG?

javascript - Google Chrome 中的 Canvas 点击区域是否仍然可用?

java - 如何在 Eclipse 中合并 GWT (Google Web Toolkit) 项目和动态 Web 项目(即 Java Web App/Servlets)?

java - GWT 服务器端数据库连接 - 找不到 oracle.jdbc.driver.OracleDrive

canvas - 如何调试 CORS 错误

java - 在图像上写入文本时出错

javascript - 如何使用 CSS 剪辑路径剪辑 Canvas ?