Me gustaría generar un archivo SVG usando C#. Ya tengo un código para dibujarlos en formato PNG y EMF (usando la clase estándar de framework System.Drawing.Imaging.Metafile y ZedGraph). ¿Qué podría recomendar hacer para adaptar ese código a SVG? Preferentemente, me gustaría encontrar alguna biblioteca (gratuita o no) que se asemeje a la interfaz System.Drawing.Graphics.¿Cómo dibujar SVG en .NET/C#?
Respuesta
Echa un vistazo al proyecto SVG framework in C# and an SVG-GDI+ bridge.
Desde la página web anterior ...
El puente SvgGdi es un conjunto de clases que utilizan SvgNet para traducir entre SVG y GDI +. Lo que esto significa es que cualquier código que use GDI + para dibujar los gráficos puede generar fácilmente SVG como , simplemente conectando el objeto SvgGraphics . Este objeto es exactamente igual que un objeto de gráficos .NET normal, pero crea un árbol SVG . Incluso cosas como los rellenos sombreados y los anclajes de línea están implementados.
+1 para su Google-fu superior. – MusiGenesis
+1, Mi google-fu no encontró este. – liori
Esta parece ser la página principal del proyecto: http://www.jbrowse.com/svgnet/. Parece que la biblioteca no se ha desarrollado durante 6 años. Probablemente aún lo verifique. – liori
-1, la pregunta era sobre exportar un PNG desde SVG. SVGPad es un editor, y no es diferente del artículo, ni la aplicación ni la biblioteca pueden hacer esto. (si lo hace, debería haber dejado más que solo un enlace) – DevTheo
@DevTheo: es posible que desee leer la pregunta y el artículo vinculado más de cerca. OP no intenta convertir un PNG a SVG; OP tiene un código existente para dibujar primitivas en formatos PNG y EMF, y quiere hacer lo mismo en el formato SVG. La muestra a la que me he vinculado proporciona el código para hacer exactamente eso. – MusiGenesis
Ok, lo siento ... Envié mi problema a la pregunta ... lo siento ... y no puedo volver a subir la votación ... De alguna manera me perdí ese punto ... – DevTheo
Como SVG es básicamente un documento XML - se puede poner en práctica "dibujo" a sí mismo. Verifique las especificaciones al W3C SVG spec. Lo hice una vez para generar imágenes de firma SVG, todo lo que tomó fue un par de horas y un firefox para probar la imagen generada.
Por supuesto, esto se aplica si está generando imágenes a partir de la entrada del usuario o si no le importa pasar algún tiempo realizando conversiones desde otro formato de imagen vectorial.
P.S. puede crear su propio contenedor para imitar System.Drawing.Graphics, p. DrawLine() para agregar al búfer interno y así sucesivamente.
El problema es el tiempo: nos gustaría pasar el menor tiempo posible en esta tarea, y el soporte de SVG no es realmente vital para nosotros. Por lo tanto, estamos buscando algo que pueda usarse como reemplazo in situ para la API de GDI ... o al menos algo que no necesite mucha adaptación. Su sugerencia ya fue considerada por nosotros. – liori
Ya veo. Entonces la sugerencia SDX2000 es el enfoque más lógico para esto (-. – Audrius
Ok, solo voy a ponerme en un año sabático para poder implementarlo. –
Utilicé este http://svg.codeplex.com/ y estoy bastante satisfecho con él. Todavía tiene algunos errores, por lo que debería echar un vistazo a los parches en http://svg.codeplex.com/SourceControl/PatchList.aspx.
Cuando descubro errores que puedo resolver, los publico directamente allí. Pero lleva un tiempo ser evaluado por los muchachos de allí. Es una mejor idea echar un vistazo a los parches y aplicarlos usted mismo.
La biblioteca es razonablemente suficiente para la mayoría de las necesidades habituales. para cosas realmente extravagantes, necesita ser pensado mejor ...
Hemos hecho una bifurcación pública de la biblioteca C# .NET SVG en github.
Se ha mejorado mucho sobre el que usted encuentra en CodePlex, por favor tenga una mirada y un tenedor a su gusto:
Editar: Sólo para hacerle saber, a partir de diciembre 2014:
Mientras que otros parecen muertos desde hace años, esto todavía está activo. Pero definitivamente podríamos usar alguna ayuda de otros desarrolladores.
¡Increíble! Estaba usando el componente SVG original, luego encontré esta publicación y estaba arriba ¡en correr con tu componente actualizado en solo segundos! ¡Gracias! –
- 1. Dibujar rectángulos dinámicamente en SVG
- 2. Dibujar una forma anulada en SVG
- 3. Dibujar ruta en la lona con los datos de ruta SVG (caminos SVG a rutas de lona)
- 4. Cómo dibujar un arco elíptico con CoreGraphics?
- 5. Incluir archivo SVG en SVG
- 6. Cómo dibujar imágenes suaves con C#?
- 7. Cómo dibujar una línea irregular/dibujada a mano usando svg/canvas?
- 8. ¿Cómo escalo un polígono SVG en ems?
- 9. ¿Cómo mostrar SVG en Eclipse?
- 10. ¿Cómo obtener ScrollBars en SVG?
- 11. Dibujar SVG en HTML5 Lienzo con soporte para el elemento de fuente
- 12. ¿Cómo dibujar texto en lienzo?
- 13. cómo dibujar autómatas en Java
- 14. Cómo dibujar fondo en openGL
- 15. ¿Cómo dibujar en un JLabel?
- 16. Cómo dibujar gráficos en Android?
- 17. Animación SVG o Canvas?
- 18. SVG y métricas de fuentes
- 19. ¿Cómo vincular desde SVG?
- 20. Dibuja un círculo hueco en SVG
- 21. Generación de gráficos SVG en JavaScript
- 22. Dibujo de imágenes SVG en wxWidgets
- 23. Cómo dibujar un rectángulo?
- 24. ¿Cómo puedo guardar el código svg como una imagen .svg?
- 25. Cómo dibujar TextView en Canvas en android ..?
- 26. ¿Cómo dibujar en Bitmap en Android?
- 27. Dibujar círculo en Android
- 28. ¿Cómo centrar Bootstrap Tooltip en un SVG?
- 29. Cómo usar SVG DOM en Python
- 30. ¿Cómo centro un SVG en un div?
¡Pregunta muy constructiva! ¿Por qué demonios estaba así de cerrado? –
@gyozokudor: las preguntas que solicitan recomendaciones para bibliotecas/herramientas se cierran aquí ... Esta es una política que no estaba en su lugar en el momento en que se envió la pregunta. Si desea analizar esta política, diríjase a meta.stackexchange.com. – liori
No sé qué discutir al respecto, me parece obvio que tales preguntas deberían permitirse. –