MetaFile API

普通图元文件

只记录 GDI 绘图操作,不能再次进行缩放。

函数 意义
CreateMetaFile(path) 创建图元文件设备场景,以记录 GDI 绘图操作

若 path 为空,则创建在内存中

CloseMetaFile(dc) 关闭图元文件设备场景,返回文件句柄
PlayMetaFile(dc,mf) 在另一场景上重复图元文件记录的绘图操作

一般通过改变场景原点位置,实现重复绘图

CopyMetaFile(dc,path) 复制图元文件句柄

若 path 为空,则创建在内存中

DeleteMetaFile(mf) 删除图元文件句柄,对于磁盘上的文件并不删除
GetMetaFile(path) 返回文件中的图元文件句柄,出错返回 0
GetMetaFileBitsEx(mf,size,buff) 将图元文件字节流存入缓冲区

增强型图元文件

除记录 GDI 绘图操作以外,还记录一个矩形范围。

在回放时若选用不同的矩形范围,可实现移动绘图位置,改变绘图比例的目的。

CreateEnhMetaFile(...) 创建增强型图元文件设备场景
CloseEnhMetaFile(dc) 关闭增强型图元文件设备场景,返回文件句柄
PlayEnhMetaFile(dc,mf,rect) 在另一场景上回放增强型图元文件记录的绘图操作

创建时所定义的矩形区域将进行缩放以与此处 rect 定义的区域相吻合

CopyEnhMetaFile(mf,path) 复制增强型图元文件句柄

若 path 为空,则复制在内存中

DeleteEnhMetaFile(mf) 删除增强型图元文件句柄,对于磁盘上的文件并不删除
GetEnhMetaFile(path) 返回文件中的增强型图元文件句柄,出错返回 0
GetEnhMetaFileBits(mf,size,buf) 将增强型图元文件字节流存入缓冲区
GetEnhMetaFileDescription(mf,size,buf) 返回增强型图元文件的说明信息

CreateEnhMetaFile 函数

CreateEnhMetaFile(dc,path,rect,Description)
参数 意义
dc 参照另一场景的相关信息,如分辨率、大小等

如为空,则以屏幕为参照

path 存储图元的文件名,.EMF 后缀

如为空,则在内存中创建

rect 定义一个矩形区域,以作为回放时的参照尺寸

度量单位固定为:0.01 毫米

Description 说明,可为空,字符串类型,格式如下:

应用程序名、空字符、图元文件说明、空字符、空字符

示例:

dc = CreateMetaFile(nil); // 建立图元文件

lineto(dc,1000,1000);     // 进行绘图操作

meta = CloseMetaFile(dc); // 返回图元句柄

dc = getdc(handle);       // 创建新的设备场景

PlayMetaFile(dc,meta);    // 回放绘图操作

ReleaseDC(dc);            // 释放设备场景

DeleteMetaFile(meta);     // 删除图元句柄