Graphics.EnumerateMetafile , unfortunately, is a very thin layer around the Win32 API. For each entry in EMF, you get an unmanaged memory address for a particular entry. There is no documentation about what it might contain, but then there is not much in the Win32 world.
So you need to consult with ancient texts!
This book comes with a sample CD-ROM with sample code that includes sample programs for using the EMF playback API.
This leaves you with two problems.
The book obviously goes out of print, so make sure that any used copy you buy includes a working CD.
The sample code is everything in C / C ++, and it will be a non-trivial task to declare the necessary interaction for 100 or so structures that are used to describe all EMF records.
So another approach could be to declare a huge interface in .NET that has a method for every GDI call you need to intercept, and then use C ++ / CLI to adapt the C ++ code sample so that it calls your huge interface for each entry.
Update
Although the MSDN documentation for EMF playback does not contain information on specific EMF records, Microsoft has separately published the full specification as of 2006:
MS-EMF: Advanced Metafile Format
Also, the author of the book I linked to above made the source code for the CDROM samples available for download:
Windows Graphic Programming Source Code
source share