我对如何在GDI中实际播放元文件感兴趣。首先,当创建元文件时,它实际上是否包含函数调用和参数值,因此可以绘制基元?我知道它用于矢量绘图,所以这是有道理的......其次,元文件是如何播放的?实际的元数据是否被绘制,然后它以某种方式BitBlitted到DC,或立即被吸引到DC?如果我,让我们说,使用FloodFill来填充图元文件中的内容,如果元中的对象与DC中绘制的对象相交,是否可以导出问题?每个示例,如果DC中的对象填充了FloodField中使用的颜色。谢谢。
答案 0 :(得分:5)
元文件非常简单,只是一组与您调用生成它的GDI函数匹配的记录。每个记录都有一个与特定GDI函数对应的数字,后跟您传递给该函数的参数值。来自winapi的记录声明:
typedef struct tagENHMETARECORD {
DWORD iType;
DWORD nSize;
DWORD dParm[1];
} ENHMETARECORD, *PENHMETARECORD;
iType是函数编号,nSize是记录的大小,dParm存储函数参数值。
因此,当您调用PlayMetafile()时,Windows只会再次进行完全相同的GDI函数调用。您传递的HDC参数决定了绘图输出的位置。容易腻。