2011-08-02 8 views
6

Estoy desarrollando una aplicación de dibujo, y ahora quiero agregar una función que cree SVG desde mi lienzo o puntos de control. (Guardo las coordenadas del mouse para cada paso de dibujo).Convertir lienzo o puntos de control a SVG

canvasElement.toDataURL("image/svg+xml"); // -- doesn't work 

Una condición: no utilizar libs externos.

entiendo, que es posible generar un archivo SVG en Javascript como:

var mysvg = "<svg>"; for(something) { mysvg += "something"; } //etc 

Pero no creo que es una buena manera.

¿Puede aconsejar algo?

+1

Esto sería bastante complicado. Tiene razón en que 'toDataURL ('image/svg + xml')' no funciona. Nunca lo hizo en ningún navegador, por lo que recuerdo. ¿Qué tipo de funcionalidad tiene tu aplicación de dibujo? Si se trata de formas simples, puede traducirlas a SVG '' 's. Si admite degradados, imágenes, etc., debe traducir cada uno de ellos individualmente en elementos correspondientes en SVG. – kangax

+0

En realidad, la forma arnt simple, vale, lo intentaré. Pero de todos modos esperará otra forma de resolver este problema. –

Respuesta

8

He resuelto el problema mediante la generación de archivos SVG. Traducí todas mis funciones de dibujo de lienzo en etiquetas de dibujo SVG.

Algo así:

function exportSVG() { 
    var svg = '<?xml version="1.0" standalone="yes"?>'; 
svg += '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'; 
svg += '<svg width="1065px" height="529px" xmlns="http://www.w3.org/2000/svg" version="1.1">'; 

for(var i=0; i<myPoints.length; i++) { 
    svg += "M"+myPoints.x[i]+","+myPoints.y[i]+" "; 
    svg += "L"+myPoints.x[i+1]+","+myPoints.y[i+1]; 
    svg += '" fill="none" stroke="rgb('+color+')" stroke-opacity="'+opacity+'" stroke-width="'+size+'px" stroke-linecap="round" stroke-linejoin="round" />'; 
} 
svg += "</svg>"; 
} 

Así, en la variable SVG habrá Imagen SVG generado a partir de la lona. ¡Gracias a todos!

+0

¿Cómo funcionaría esto? Te estás perdiendo la etiqueta de apertura en tu bucle for. ¿Qué se supone que es esa etiqueta? DiegoSalazar

Cuestiones relacionadas