2012-07-22 41 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"); 
}