I have done something similar before. In my case, I created a converter to convert records from WMF, EMF, and EMF+ metafiles to vector graphics objects.
There is no GDI+ method or set of methods to turn a metafile into a graphics path. I found that I had to use Graphics.EnumerateMetafile(), and in the callback I manually extracted the data from each record and interpreted each record type individually. It was quite a bit of work but the results were very good.
There are 3 different metafile formats:
- WMF: from the 16-bit windows days - doesn't support curves (bezier, cardinal, etc) and various other GDI features
- EMF: GDI32's metafile format. Supports curves and (almost) everything else GDI allows
- EMF+: GDI+'s metafile format. GDI+ drawing records are entirely different in format than normal EMF records, but allow a lot more features.
At the time I wrote my code, all I had to go on for WMF and EMF were the MSDN docs, which were kind of confusing at times, and EMF+ was not documented at all (although there were unofficial docs for some of what I needed). I spent a lot of time reverse-engineering the format.
These days, thanks to MS's open protocol specifications initiative, you should have everything you need, in an easier format:
WMF format documentation[
^]
EMF format documentation[
^]
EMF+ format documentation[
^]