分析EMF文件以及模拟绘制已经有一段时间了,这里做个总结。然后继续重构雁哥代码。(写代码不写注释会遭雷劈的!!)
MSDN的资料是宝,但只是对于看得懂的人来说。
http://msdn.microsoft.com/en-us/library/cc230565(PROT.13).aspx
第一部分:
EMF文件对设备描述表中的对象采用了object table机制。
http://msdn.microsoft.com/en-us/library/cc231165(PROT.10).aspx
即在操作了下列几个图元函数后在各自的ihpen,ihbrush,ihfont等(未列出color space, palette)进行编号
1,EMR_EXTCREATEPEN,EMR_CREATEPEN
2,EMR_CREATEBRUSHINDIRECT
3,EMR_EXTCREATEFONTINDIRECTW
其号码顺序按照出现前后次序进行编制。例如先创建画笔,则画笔的ihpen = 1.按序下来。
之后直到遇到EMR_DELETEOBJECT,则把object table中的相应号的object删除,之后有新创建的object则填入空缺处。
对于这个过程的理解是写分析代码,从数据找出规律。
第二部分:
as模拟GDI的设备描述表
GDI的设备描述