2009-09-28 24 views
9

Estoy trabajando con una biblioteca que representa parte de su estado como un documento SVG.¿Hay alguna manera de procesar SVG en Windows Forms?

Me gustaría mostrar esto en Windows Forms o en un entorno WPF. ¿Hay actualmente una manera de hacer esto?

De lo contrario, podría modificar la biblioteca para utilizar una estrategia de representación más general, y luego agregar un adaptador XML para restaurar la funcionalidad original, pero esta no es mi estrategia preferida.


Esta pregunta también podría beneficiarse de una respuesta: How do I display vector graphics (SVG) in a Windows Forms application?

Respuesta

3

Aquí hay dos enlaces que pueden ayudarle (nunca utilizado cualquiera de ellos, yo):

https://github.com/vvvv/SVG

http://sourceforge.net/projects/svgdomcsharp/

+0

Mis habilidades de Google funcionan, así que había encontrado estas dos antes. De hecho, actualmente estoy implementando una interfaz de fachada que puede ocultar un objeto SvgNet.SvgGraphics o un objeto System.Drawing.Graphics. Puedo usar este 'IGraphicsFacade' para renderizarlo y renderizarlo a los gráficos Svg o a un objeto real de Graphics. Aunque es un poco complicado. –

+0

@John: probaría la otra respuesta en la pregunta a la que se vinculó. Los navegadores pueden procesar archivos SVG, por lo que debería ser bastante sencillo poner un control WebBrowser en un formulario y establecer su propiedad Url en su archivo SVG. – MusiGenesis

+0

Y perdón por los enlaces de Google: nunca se sabe lo que las personas pueden o no pueden hacer. Al menos no usé www.lmgtfy.com. – MusiGenesis

1

Hav e miraste el conjunto Ab2d de Apis? ReaderSvg y ViewerSvg parece hacer el trabajo? ¡Pero no son gratis!

+0

Eso es WPF, no Winforms. –

+0

Aún puede utilizar un 'Host de elemento WPF' en WinForms (consulte * WPF \t interoperabilidad * en Toolbox) –

2

Si está utilizando el control del navegador web para SVG. Tendrá un problema con la Infracción de acceso debido a la Prevención de ejecución de datos.

La solución es tener las siguientes líneas en su post-eventos de generación

call "$(DevEnvDir)..\..\VC\bin\vcvars32.bat" 
call "$(DevEnvDir)..\..\VC\bin\editbin.exe" /NXCOMPAT:NO "$(TargetPath)" 

Para obtener información adicional, consulte este enlace http://blogs.msdn.com/b/ed_maurer/archive/2007/12/14/nxcompat-and-the-c-compiler.aspx

Cuestiones relacionadas