2009-12-17 8 views
6

Ich muss in der Lage sein, SVG Bilder zu zeichnen (mit der Fähigkeit zu skalieren und die Bilder um 90,180 und 270 Grad zu drehen).Zeichnen von SVG-Bildern in wxWidgets

Ich möchte auch die Möglichkeit, anstatt die Bilder zu einer Bitmap (z. B. für die Anzeige) zu rendern, in der Lage sein, sie in ein neues SVG-Bild zu zeichnen (das "Dokument" in SVG exportieren).

wxWidgets scheint keine integrierten SVG-Funktionen zu haben, daher bin ich mir nicht sicher, wie ich solche Funktionen hinzufügen soll.

+0

Kleine Anmerkung. Kenne die Einschränkungen von SVG. Ich habe einmal ein Programm geschrieben, um ein massives Bounce-Diagramm mit Dutzenden von Agenten zu erstellen, die auf der Analyse einer Simulationsprotokolldatei basieren, um herauszufinden, dass SVG in Firefox und IE sehr langsam ist, wenn Sie große SVG-Dateien erstellen. Ich habe meine Sachen auf einer QT-Leinwand gezeichnet, und es lief ohne Probleme. (Ich weiß, dass QT/wxWidgets nicht im Browser eingebettet ist, so dass dies für Ihren Fall nicht funktioniert.) –

+3

Nun, ich schreibe eine Desktop-Anwendung, obwohl Sie ein alternatives Vektorgrafikformat kennen, das ich in wxWidgets verwenden kann und gute Unterstützung hat In Bildbearbeitungssoftware bin ich offen für Vorschläge. –

+0

+1 Für die Einbindung eines Links zur Erklärung von * SVG *. –

Antwort

0

Sie können in eine Datei im SVG-Format mit wxSVGFileDC (http://docs.wxwidgets.org/trunk/classwx_s_v_g_file_d_c.html) rendern, aber es gibt keine Unterstützung für das Zeichnen von SVG-Bildern, Sie müssen eine SVG-Rendering-Bibliothek verwenden und sie in wx integrieren (wie Sie dies tun abhängig).

Beachten Sie, dass wxSVGFileDC in contrib ist, d. H. Eine zusätzliche Bibliothek, die unabhängig in wx 2.8 gebaut werden muss, aber in der Hauptbibliothek selbst in 2.9 ist.

0

Ich bin nicht sicher, wie praktisch diese Lösung ist, aber eine Idee könnte sein wxWebKit in Ihre Anwendung einbetten und dann verlassen sich auf WebKit's SVG support für Sie das Rendering zu tun.

4

Die cairo library website hat examples auf Zeichnung SVG mit librsvg.

Sowohl die kairo und librsvg Bibliotheken sollten genug sein, um Cross-Plattform zu tun, was Sie brauchen, und mit wxcairo sollte es möglich sein, sie auf WxWidgets andocken.

Das ist die erste Idee, die ich recherchieren würde, wenn ich mit der Aufgabe konfrontiert werde, SVG in wxWidgets zu zeichnen.

Auch mit kairo zu SVG-Dateien Zeichnung ist ganz einfach, wenn Sie alle Ihre Zeichnung mit kairo tun sowieso, und die Zeichnung Modell kairo verwendet, ist ganz ähnlich wie SVG.