2012-07-22 15 views
7

Sto provando l'elemento Dart Language e HTML5 Canvas, ma sono bloccato con un problema. Non so come caricare un'immagine in Dart. Posso ottenere CanvasRenderingContext2D e con questo posso chiamare fillText() e fillRect() e tutto funziona, ma sto cercando di capire come caricare un'immagine e disegnare con drawImage.Come caricare un'immagine in Dart

risposta

10

Creare e caricare l'immagine

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

Disegnare l'immagine qui sopra sulla tela dopo il caricamento

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

Salve, Sono nuovo di dardo e quando provo la funzione image.on.load.add ottengo un errore affermando che "il carico" non è un membro del eventi. Anche il suggerimento sul codice non è molto utile con questo. Uso Dart Editor versione 0.4.2_r20259 e Dart SDK versione 0.4.2.8_r20259. –

+1

Ok, ho scoperto il motivo: il core dartlang aveva un aggiornamento ... [Dart News & Updates] (http://news.dartlang.org/2013/01/new-dom-event-streams-api.html) . Ora "image.on.load.add" dovrebbe essere scritto come "image.onLoad.listen". –

+0

Dato che M1 di Dart è stato rilasciato, la sintassi è stata modificata aggiungendo "src:" prima del nome file (nuovo ImageElement (src: "my_image.png");) o ciò causerà un errore di runtime. – daftspaniel

9

recente immagine sintassi 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

So che questa domanda è vecchio ma forse questo può aiutare qualcun altro. C'è ancora un altro modo per farlo:

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