2012-07-22 15 views
7

Estoy probando el elemento Dart Language y HTML5 Canvas, pero tengo un problema. No sé cómo cargar una imagen en Dart. Puedo obtener CanvasRenderingContext2D y con esto puedo llamar a fillText() y fillRect() y todo funciona, pero estoy tratando de averiguar cómo cargar una imagen y dibujar con drawImage.Cómo cargar una imagen en Dart

Respuesta

10

Crear y cargar la imagen

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

Dibujar la imagen de arriba en la lona después de cargarse

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

Hola, soy nuevo en DART y cuando intento la función image.on.load.add me sale un error que indica que "carga" no es un miembro de Eventos. También la sugerencia de código no es muy útil con esto. Estoy usando Dart Editor versión 0.4.2_r20259 y Dart SDK versión 0.4.2.8_r20259. –

+1

Ok, descubrí por qué: el núcleo de dartlang tenía una actualización ... [Noticias de Dart y actualizaciones] (http://news.dartlang.org/2013/01/new-dom-event-streams-api.html) . Ahora "image.on.load.add" debería escribirse como "image.onLoad.listen". –

+0

Desde que se lanzó M1 de Dart, la sintaxis ha cambiado agregue "src:" antes del nombre del archivo (nueva ImageElement (src: "my_image.png");) o esto causará un error de tiempo de ejecución. – daftspaniel

9

reciente imagen sintaxis 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

Sé que esta pregunta es viejo, pero tal vez esto puede ayudar a alguien más. Todavía hay otra manera de hacerlo:

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