Format de presse-papiers graphiques vectoriels pour Qt
Question
Je souhaite que mon application Qt puisse enregistrer des graphiques vectoriels simples dans le Presse-papiers de manière compatible. Sur Windows, je veux pouvoir coller les graphiques dans Microsoft Word ou Powerpoint. Sous Linux, je veux être compatible avec Open Office.
Quel format recommanderiez-vous? Qt peut-il générer des CEM de manière simple? Le SVG est-il une option?
Mise à jour:
Mon plan actuel consiste à ajouter un morceau de code win32 natif pour rendre les graphiques au format emf sous Windows. Ce code ne sera pas disponible sur Linux.
La solution
La classe QGraphicsView et ses assistants associés peuvent être convertis en métafichier QT. formater via la classe QPicture (pour laquelle vous pouvez écrire un traducteur pour EMF) , en SVG via la classe QSVGGenerator et en postscript / pdf via QPrinter . Il peut également rendre les formats bitmap et diverses autres cibles.
Autant que je sache, il n’a pas de fonction générique de "rendu au format EMF" - vous devez écrire dans un fichier autre que le métafichier QT et le convertir en fichier EMF. Si vous n'avez besoin que d'un sous-ensemble des primitives graphiques, il vous suffira peut-être de prendre en charge ce sous-ensemble dans le traducteur. Sinon, vous pouvez passer de SVG à QT via QSVGGenerator.Autres conseils
J'ai ici une classe PyQt QPaintEngine génératrice de CEM: https: / /github.com/jeremysanders/veusz/blob/master/document/emf_export.py . Il utilise la bibliothèque pyemf, mais je pense qu’il serait assez facile de porter en C ++. Malheureusement, les fichiers ne sont pas compatibles avec OpenOffice car OO supporte mal les chemins dans les fichiers EMF. Il convertit également le texte en chemins pour WYSIWYG.