官方规范可以直接从MSDNhttp://msdn.microsoft.com/en-us/library/cc230514(PROT.10).aspx下载。
阅读和理解需要一些时间,但如果您以前使用过二进制文件格式,这绝对是可行的。
但请注意,EMF 是一种(伪)矢量图像格式,因此图像可以缩放到任意大小。但可能会有 默认 宽度和高度。特别是,确实应该有一个明确的纵横比。
更新
我认为图元文件的宽度(以像素为单位)是文件的第 5 个基数,而高度(以像素为单位)是第 6 个基数。在典型的情况下。至少这对您来说可能是一个不错的起点。
我刚刚创建了一个示例 EMF 文件,它开始
01 00 00 00 88 00 00 00 00 00 00 00 00 00 00 00
ae 01 00 00 75 01 00 00 00 00 00 00 00 00 00 00
第五个基数是AE010000,由于字节小端,十六进制为000001AE,即十进制的430。第六个基数是 75010000,即十六进制的 00000175 或十进制的 373。因此我得到的尺寸是 430×373 平方像素。 Paint 报告 432×374 平方像素。
如果我有更多的时间,我会更广泛地研究文件格式。但至少我希望这可能是你的起点。
更新 2
第三和第四个 32 位整数显然是图像的左坐标和上坐标,分别以逻辑单位表示,而第五和第六个 32 位整数是右坐标和下坐标。大多数情况下(top, left) = (0, 0),然后我上面的文字是正确的(即width = right,height = top坐标)。
如果是(top, left) <> (0, 0),那么自然是width = right - left 和height = bottom - top。
现在这可能不是全部;如果您将获得的数字与 Paint 报告的数字进行比较,您会得到小的偏差。所以待续……。