我对如何在GDI中实际播放元文件感兴趣。首先,在创建图元文件时,它实际上是否包含函数调用和参数值,以便可以绘制基元?我知道它用于矢量绘图,所以这是有道理的...第二,如何播放图元文件?实际的元数据会被绘制,然后以某种方式被BitBlitted转换为DC,还是立即被绘制为DC?如果我可以说,使用FloodFill填充图元文件中的某些内容,如果图元中的对象与DC中绘制的对象相交,是否可以得出问题?例如,如果DC中的对象填充了FloodField中使用的颜色。谢谢。

最佳答案

图元文件非常简单,只是一组与您调用生成该图的GDI函数相匹配的记录。每个记录都有一个对应于特定GDI函数的数字,后跟您传递给该函数的参数值。 Winapi中记录的声明:

typedef struct tagENHMETARECORD {
  DWORD iType;
  DWORD nSize;
  DWORD dParm[1];
} ENHMETARECORD, *PENHMETARECORD;


iType是函数编号,nSize是记录的大小,dParm存储函数参数值。

因此,当您调用PlayMetafile()时,Windows会再次再次进行完全相同的GDI函数调用。您传递的HDC参数确定图形输出将到达的位置。十分简单。

关于c++ - 如何在GDI中播放元文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20194185/

10-11 18:54