增强型图元文件操作

【勇芳软件工作室】汉化HomePreviousNext

开发人员通过使用CreateEnhMetaFile函数并提供适当的参数来创建增强的图元文件。Win32 API使用这些参数来维护图片尺寸,以确定图元文件是否应存储在磁盘或内存中,依此类推。

为了保持输出设备的图像尺寸,Win32 API需要参考设备的分辨率。该【参考设备】是图片首次出现的设备,【参考DC】是与参考设备相关的DC。当调用CreateEnhMetaFile函数时,应用程序必须提供标识此DC的句柄。应用程序可以通过调用GetDCCreateDC函数获取此句柄,或者将NULL指定为使用当前显示设备作为参考设备的句柄。

大多数应用程序永久存储图片,因此创建存储在磁盘上的增强型图元文件;然而,有些情况下,这不是必需的。例如,提供图表绘制功能的文字处理应用程序可以将用户定义的图表存储在内存中,作为增强的图元文件,然后将增强的元文件位从内存复制到用户的文档文件中。需要永久存储在磁盘上的元文件的应用程序必须在调用CreateEnhMetaFile函数时提供文件名。如果开发人员不提供文件名,Windows会自动将图元文件视为临时文件,并将其存储在内存中。

开发人员可以向包含图片和作者信息的图元文件添加可选文本描述。应用程序可以在文件打开对话框中显示这些字符串,以向用户提供有关元文件内容的信息,这将有助于选择适当的文件。如果应用程序包含文本描述,则当调用CreateEnhMetaFile函数时,应用程序必须提供指向该字符串的指针。

CreateEnhMetaFile功能成功时,它返回一个标识特殊图元文件DC的句柄。元文件DC是唯一的,因为它与文件而不是与输出设备相关联。当Windows处理接收到元文件DC的句柄的GDI函数时,它会将GDI函数转换为增强型图元文件记录,并将该记录附加到增强型图元文件的末尾。

完成图片并将最后一个记录附加到增强型元文件后,应用程序可以通过调用CloseEnhMetaFile函数关闭文件。此函数关闭并删除特殊图元文件DC,并返回一个标识增强图元文件的句柄。应用程序可以使用此句柄完成以下任务。

*显示存储在增强型图元文件中的图片。

*创建增强型图元文件的副本。

*枚举,编辑或复制增强图元文件中的各个记录。

*检索存储在增强型图元文件中的可选描述。

*检索增强型图元文件标题的副本。

*检索增强型图元文件的二进制版本。

*枚举可选调色板中的颜色。

*将增强格式的元文件转换为Windows格式的图元文件。

某些应用程序在启用用户更改原始文件之前创建文件的临时备份(或重复)副本。应用程序可以通过调用CopyEnhMetaFile函数创建增强型图元文件的备份副本,提供标识增强型元文件的句柄,并提供指向新文件名称的指针。

大多数绘图,插图和计算机辅助设计(CAD)应用程序需要编辑存储在增强图元文件中的图片的方法。虽然编辑增强型图元文件是一项复杂的任务,但开发人员可以使用EnumEnhMetaFile函数与其他Win32函数结合在应用程序中提供此函数。EnumEnhMetaFile函数及其关联的回调函数使应用程序能够处理增强型图元文件中的各个记录。

某些应用程序在“文件打开”对话框中显示具有相应文件名的增强型图元文件的文本描述。应用程序可以通过检索元文件头并检查其中一个成员来确定该字符串是否存在于增强型图元文件中。GetEnhMetaFileHeader函数可以检索元文件头。如果字符串存在,则应用程序通过调用GetEnhMetaFileDescription函数来检索该字符串。

一些应用程序通过调用GetEnhMetaFileBits函数来检索图元文件的内容;但是,在检索内容之前,应用程序必须指定文件的大小。要获取大小,应用程序可以使用GetEnhMetaFileHeader函数并检查相应的成员。

为了在各种输出设备上显示图像时实现一致的颜色,应用程序可以调用CreatePalette函数并将逻辑调色板存储在增强型图元文件中。显示存储在增强型图元文件中的图片的其他应用程序将在显示图片之前检索该调色板并调用RealizePalette功能。要确定调色板是否存储在增强的图元文件中,应用程序可以检索图元文件头并检查适当的成员。如果存在调色板,应用程序可以调用GetEnhMetaFilePaletteEntries函数来检索逻辑调色板。