2012-04-03 51 views
4
/** 
* 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); 
} 

這是我的代碼。我想將圖像繪製到畫布上。 這工作如果最後一行:GWT Canvas2D draw圖片

RootPanel.get(「canvas」)。add(img);

沒有被註釋掉。

但用線評論看來,圖像不會被加載或如此。有任何想法嗎?

回答

3

你把圖像放在WEB-INF文件夾中嗎?這是GWT從中加載圖像的地方。通常建議創建一個「images」文件夾,以便您可以使用「images/face.png」加載它。

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

這對我有用,除了我必須把img.setVisible(false);在onLoad中。 – Craigo 2016-03-16 04:10:27