2008-10-25 10 views
7

Ich möchte meine Qt-Anwendung in der Lage sein, einfache Vektorgrafiken auf kompatible Weise in die Zwischenablage zu speichern. Unter Windows möchte ich die Grafiken in Microsoft Word oder Powerpoint einfügen können. Unter Linux möchte ich mit dem Open Office kompatibel sein.Vektorgrafik Zwischenablage-Format für Qt

Welches Format würden Sie empfehlen? Kann Qt auf einfache Weise EMF erzeugen? Ist SVG eine Option?

Update:

Mein aktueller Plan ist ein Stück nativen win32 Code hinzufügen, um die Grafiken zu rendern auf Windows emf. Dieser Code ist unter Linux nicht verfügbar.

Antwort

4

The QGraphicsView Klasse und die damit verbundene Helfer können auf ein QT-Metafile-Format durch die QPicture Klasse machen (für die Sie einen Übersetzer zu EMF schreiben könnten), durch die QSVGGenerator Klasse SVG und Postscript/PDF durch QPrinter. Es kann auch zu Bitmap-Formaten und verschiedenen anderen Zielen gerendert werden.

AFAIK es hat keine generische "Render to EMF" -Funktion - Sie müssten zu etwas anderem wie der QT Metafile schreiben und in EMF konvertieren. Wenn Sie nur eine Teilmenge der Grafikgrundelemente benötigen, müssen Sie diese Teilmenge möglicherweise nur im Übersetzer unterstützen. Ansonsten könntest du von SVG gehen, was du direkt von QT über QSVGGenerator bekommen kannst.

+0

Ich halte dies nicht für eine einfache Lösung. Das Schreiben eines solchen generischen Übersetzers würde Wochen dauern. Die EMF-Spezifikationen sind 310 Seiten lang. Es wäre viel einfacher, EMF direkt zu erzeugen (nur eine kleine Teilmenge von EMF ist notwendig). – danatel

3

Ich habe eine EMF-generierende PyQt QPaintEngine-Klasse hier: https://github.com/jeremysanders/veusz/blob/master/document/emf_export.py. Es verwendet die Pyemf-Bibliothek, aber ich denke, es wäre ziemlich einfach, nach C++ zu portieren. Leider sind die Dateien nicht mit OpenOffice kompatibel, da OO in EMF-Dateien ziemlich defekte Pfade unterstützt. Es konvertiert auch Text in Pfade für WYSIWYG.