2012-07-22 73 views
7

我正在嘗試Dart Language和HTML5 Canvas元素,但我遇到了一個問題。我不知道如何在Dart中加載圖片。我可以得到CanvasRenderingContext2D,並且可以調用fillText()和fillRect()以及一切正常,但我試圖弄清楚如何加載圖像並使用drawImage進行繪製。如何在飛鏢中加載圖像

回答

10

創建並加載圖像

ImageElement image = new ImageElement(src: "my_image.png"); 
image.onLoad.listen((e) { 
    // Draw once the image is loaded 
}); 

畫在畫布上的上述圖像加載它

context.drawImage(image, destX, destY); 
+0

您好,我是新來的鏢,當我嘗試了image.on.load.add功能我得到一個錯誤,指出「負荷」是不是成員活動。代碼提示對此也不是很有幫助。我使用Dart編輯器版本0.4.2_r20259和Dart SDK版本0.4.2.8_r20259。 – 2013-03-22 15:24:01

+1

好吧,我發現原因:dartlang核心有一個更新... [Dart News&Updates](http://news.dartlang.org/2013/01/new-dom-event-streams-api.html) 。現在「image.on.load.add」應該寫爲「image.onLoad.listen」。 – 2013-03-22 19:03:38

+0

由於Dart的M1被釋放,語法已經改變,在文件名之前添加「src:」(新的ImageElement(src:「my_image.png」);),否則這會導致運行時錯誤。 – daftspaniel 2013-05-06 18:31:19

9

較新的圖像的onload語法後:

readFile() { 
    ImageElement image = new ImageElement(src: "plant.png"); 
    document.body.nodes.add(image); 
    image.onLoad.listen(onData, onError: onError, onDone: onDone, cancelOnError: true); 
    } 

    onData(Event e) { 
    print("success: "); 
    } 

    onError(Event e) { 
    print("error: $e"); 
    } 

    onDone() { 
    print("done"); 
    } 
1

我知道這個問題是舊的,但也許這可以幫助別人。還有另一種方式來做到這一點:

void main() { 
    ImageElement image = new ImageElement(src: "pic.png"); 
    img.onLoad.listen(onData); 
    img.onError.listen(onError); 
} 

void onData(Event e) { 
    print("Load success"); 
} 

void onError(Event e) { 
    print("Error: $e"); 
}