2009-12-17 16 views
6

Necesito poder dibujar SVG imágenes (con la capacidad de escalar, y rotar las imágenes en 90,180 y 270 grados).Dibujo de imágenes SVG en wxWidgets

También quiero la capacidad de en lugar de representar las imágenes en un mapa de bits (por ejemplo, para mostrar), para poder dibujarlas en una nueva imagen SVG (exportando el "documento" a SVG).

wxWidgets no parece tener ninguna capacidad SVG incorporada, por lo que no estoy seguro de cómo proceder para agregar dicha funcionalidad.

+0

Pequeña nota. Conozca las limitaciones de SVG. Una vez escribí un programa para crear un diagrama de rebote masivo con docenas de agentes hablando entre ellos basados ​​en el análisis de un archivo de registro de simulación, solo para descubrir que SVG es muy lento en Firefox e IE cuando creas archivos SVG de gran tamaño. Cambié a dibujar mis cosas en un lienzo QT, y se ejecutó sin problemas. (Me doy cuenta QT/wxWidgets no incrustado en el navegador por lo que esto puede no funcionar para su caso.) –

+3

Bien estoy escribiendo una aplicación de escritorio, aunque usted sabe de un formato de gráficos vectoriales alternativo que puedo usar en wxWidgets y tiene un buen soporte en el software de edición de imágenes estoy abierto a sugerencias. –

+0

+1 Por incluir un enlace para explicar * SVG *. –

Respuesta

0

Puede procesar en un archivo en formato SVG usando wxSVGFileDC (http://docs.wxwidgets.org/trunk/classwx_s_v_g_file_d_c.html) pero no hay soporte para dibujar imágenes SVG, necesitará usar una biblioteca de renderizado SVG e integrarlo con wx (cómo hacerlo es plataforma- dependiente).

Observe que wxSVGFileDC está en contrib, es decir, una biblioteca adicional que debe construirse de forma independiente, en wx 2.8, pero está en la biblioteca principal en 2.9.

0

No estoy seguro de qué tan práctica es esta solución, pero una idea podría ser insertar wxWebKit en su aplicación y luego confiar en WebKit's SVG support para realizar la representación por usted.

4

cairo library website tiene examples en el dibujo SVG usando librsvg.

Tanto el cairo y librsvg bibliotecas deben ser suficientemente multiplataforma para hacer lo que necesita, y con wxcairo debería ser posible para acoplarlas a wxWidgets.

Esa es la primera idea que investigaría cuando enfrente la tarea de dibujar SVG en wxWidgets.

Además, dibujo a archivos SVG con Cairo es bastante fácil cuando usted está haciendo todo el dibujo con Cairo todos modos, y el modelo de dibujo Cairo utiliza es muy similar a SVG.