我正在使用 Windows.Forms 使用 .NET 2.0 编写图表编辑器。图表必须作为矢量图形复制到 Microsoft Word 和 Visio 中。
编辑器有一个保存为 EMF的功能:Word 和 Visio 可以将生成的文件作为矢量图形图像导入。代码与此类似。
我现在添加了一个复制为 EMF功能,以支持直接复制和粘贴到 Word 和 Visio,使用与另存为 EMF 功能相同System.Drawing.Imaging.Metafile
的功能。
使用 将其复制到剪贴板SetData(DataFormats.EnhancedMetafile, ...)
会产生 Word 声称它可以粘贴为 EMF 的结果,但显示为空。文档对此进行了解释,并提供了使用非托管 API 函数的解决方法。我已经复制了那个代码。
现在,EMF 图像在粘贴到 Word 时会显示,但在粘贴到 Visio 时不会显示!当我将它粘贴到 Word 中,然后将其复制到那里并粘贴到 Visio 中时,它也会显示在那里。
我怎样才能使这项工作?
- Word 在做什么而我的代码不是?
- 为什么通过文件的路由在没有非托管 API 调用的情况下工作,而不是通过剪贴板的路由?
- 为什么我首先需要非托管对象(句柄)?
- 有没有我可以阅读的自包含文档来理解这些问题而无需学习 Win32 编程?