- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的程序中,我需要“播放”或“解析”Windows 图元文件(WMF 和 EMF)。我已经通过 MSDN 和 Google 进行了挖掘,最接近的是图形。枚举图元文件方法。我可以让它工作,因为我的 EnumerateMetafileProc 回调被调用,然后我可以调用 PlayRecord。缺少的是如何从该回调中获取有用的数据。
我看过的例子:http://msdn.microsoft.com/en-us/library/ms142060.aspx
回调有一个 recordType 参数,它是一个 ENUM。嗯,这看起来很有用,除了它们似乎无法将数据转换为任何有用的类型。
我的目标是回放 WMF/EMF 的创建过程,这样我就可以对具有(DrawLine、DrawPoint、DrawArc)等方法的专用图形类进行函数调用。从某种意义上说,我正在以完全不同的格式(转换)重新创建 WMF/EMF 绘图。
非常感谢您提供这方面的帮助。
最佳答案
Graphics.EnumerateMetafile , 不幸的是,它是围绕 Win32 API 的一个非常非常薄的层。对于 EMF 中的每条记录,您都会获得记录特定结构的非托管内存地址。没有关于它可能包含的内容的文档 - 但是,在 Win32 世界中也没有什么可继续的。
所以你需要查阅古代文献!
This book came with a code sample CD-ROM其中包括使用 EMF 播放 API 的示例程序。
这给您带来了两个问题。
这本书显然已经绝版,因此请确保您购买的任何旧书都包含一张可用的 CD-ROM。
示例代码全部使用 C/C++ 编写,为用于描述所有 EMF 记录的 100 多个结构声明必要的互操作将是一项艰巨的任务。
所以另一种方法可能是在 .NET 中声明一个巨大的接口(interface),它为您需要拦截的每个 GDI 调用提供一个方法,然后使用 C++/CLI 调整示例 C++ 代码,以便它为每个调用您的巨大接口(interface)记录。
更新
虽然 EMF 播放的 MSDN 文档不包含特定 EMF 记录的详细信息,但 Microsoft 已在 2006 年单独发布了完整的规范:
MS-EMF: Enhanced Metafile Format
我上面链接的那本书的作者也提供了 CDROM 示例的源代码可供下载:
关于c# - WMF/EMF 文件格式转换 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1763428/
我一直在尝试在 Delphi 中更改 wmf Canvas 上的颜色,对于通常的图像,我只是运行扫描线或在每个 X 和 Y 像素上运行循环并给它一个新的颜色代码,但使用 MetaCanvas 这种方法
我正在学习 Windows Media Foundation。 我已经测试了 Windows SDK 中提供的几个示例应用程序。 我有从相机捕获视频和从文件播放视频的示例应用程序。 我要存档的是将这两
有很多将 wmf 转换为位图的示例,例如: Reliable .wmf/wmf to Pixel based image conversion 但我需要反向操作。我不寻找矢量化器。我只想在 wmf 文
我正在尝试将图表从 Excel 导出为 wmf 或 emf 格式。 如果导出为 GIF 但不使用 WMF 作为过滤器名称,则该代码有效。 这有效: Chart.Export FileName:="cu
在我的程序中,我需要“播放”或“解析”Windows 图元文件(WMF 和 EMF)。我已经通过 MSDN 和 Google 进行了挖掘,最接近的是图形。枚举图元文件方法。我可以让它工作,因为我的 E
我在将矢量图形 (WMF) 插入报告(Visual Studio 2008 中的 Crystal Reports v10.5)时遇到问题。图片是静态的,在VS中设计报表时选择“插入图片”插入。 问题在
如何将 WMF 文件转换为 svg 文件?我有大约 550 个 WMF 文件要转换为 SVG 格式。 对于一个文件,我在 VISIO 中打开了 WMF 文件并将其保存为 SVG 格式,但是转换大约 5
我正在 Alpine 上安装 imagemagick,它会安装 7.0.10 版本的 imagemagick。 我的主要用途是将 WMF 转换为 PNG。但是转换sample.wmf Sample.p
我正在 Alpine 上安装 imagemagick,它会安装 7.0.10 版本的 imagemagick。 我的主要用途是将 WMF 转换为 PNG。但是转换sample.wmf Sample.p
在 C++ 中,当使用 GDI+ RotateFlip 函数旋转 WMF 图像时,图像不会旋转。我使用以下代码进行旋转。 Graphics graphics(hdc); Image image(L"C
我想将 .svg 矢量图形转换为 .wmf。我查看了这个图书馆 http://wmf.codeplex.com/ ,但没有成功。 我找到了这个图书馆 http://svg2swf.sourceforg
我可以使用下面的 java 代码检查字节数组是否是元文件图像,如 wmf、emf private boolean isMetaFileFormat(byte[] pictureData) {
我正在尝试通过 WUSA.exe 添加 WMF 以在 Windows 7 上使用 powershell 3.0。这是为了重命名计算机,因为我找不到正确的 NETDOM.Exe 安装程序,并且 WMI
我正在使用 Windows Media Format SDK实时捕获桌面并将其保存在 WMV 文件中(实际上这是对我的项目的过度简化,但这是相关部分)。对于编码,我使用 Windows Media V
如何获取可在 MS Office(Word 和 PowerPoint)中用作矢量图形的 emf 或 wmf 文件形式的 matplotlib 绘图? 我尝试使用 Inkscape 和 LibreOff
我正在尝试在 Linux 下使用 PHP 和 Imagick 将 SVG 格式的图像转换为 WMF。我可以成功地将图像从 SVG 转换为 PNG,但不能从 SVG 转换为 WMF。我没有得到任何 PH
如何将一个 WMF 文件转换为具有自定义输出分辨率的 PNG/BMP/JPG 格式? 示例:获取 WMF 文件并输出 2000x2000 像素的 PNG 文件。 提前致谢。 最佳答案 您可以使用出色的
我正在收到带有 Word docx 文档的表单上传。我成功完成了所有解析。然后我必须在网络上显示该 Word 文档。 我现在遇到的问题是我嵌入了 EMF 文件(PIL 库将其识别为 WMF 格式),但
我需要将一些格式为“wmf”的视频文件转换为“mp4”或“avi”。 我使用带有命令的ffmpeg: ffmpeg -i test.wmf test.mp4 但是当我在视频播放器中播放结果文件时,我发
我正在编写 WMF 自定义媒体源。 此源从 RTSP 流(使用 FFMPeg 4.1)获取 h264 数据包,并将它们发送到解码器并使用 EVR 将它们呈现到屏幕上。它还将它们发送到编码器和文件写入器
我是一名优秀的程序员,十分优秀!