我希望我的 Qt 应用程序能够以兼容的方式将简单的矢量图形保存到剪贴板。在 Windows 上,我希望能够将图形粘贴到 Microsoft Word 或 Powerpoint 中。在 Linux 上,我希望与 Open Office 兼容。
你会推荐哪种格式?Qt 能否以简单的方式生成 EMF?SVG是一种选择吗?
更新:
我目前的计划是添加一段本机 win32 代码来将图形渲染到 windows 上的 emf。此代码在 linux 上不可用。
QGraphicsView类及其关联的帮助程序可以通过QPicture类(您可以为其编写 EMF 的翻译器)呈现为 QT 元文件格式,通过QSVGGenerator类呈现为 SVG,并通过QPrinter呈现为 postscript/pdf 。它还可以渲染为位图格式和各种其他目标。
AFAIK 它没有通用的“渲染到 EMF”设施 - 您必须写入 QT Metafile 之类的其他内容并转换为 EMF。如果您只需要图形基元的一个子集,您可能只需要在转换器中支持该子集。否则,您可以使用 SVG,您可以通过 QSVGGenerator 直接从 QT 获取。
我在这里有一个 EMF 生成 PyQt QPaintEngine 类:https ://github.com/jeremysanders/veusz/blob/master/document/emf_export.py 。它使用 pyemf 库,但我认为移植到 C++ 会相当容易。不幸的是,这些文件与 OpenOffice 不兼容,因为 OO 在 EMF 文件中的路径支持非常糟糕。它还将文本转换为所见即所得的路径。