getenhmetafile (gdi32)
Last changed: -65.197.241.129

.
Summary

C# Signature:

[DllImport("gdi32.dll")]
static extern uint GetEnhMetaFileBits(IntPtr hemf, uint cbBuffer,
   [Out] byte [] lpbBuffer);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

System.Drawing.Imaging.Metafile metafile = GetMetafileFromSomewhere();
IntPtr hEMF = metafile.GetHenhmetafile();
uint len = GetEnhMetaFileBits(hEMF, 0, null);
byte[] rawBytes = new byte[len];
GetEnhMetaFileBits(hEMF, len, result);
DeleteEnhMetaFile(hEMF);

//Another sample

    [System.Runtime.InteropServices.DllImport("gdi32")]
    static extern int GetEnhMetaFileBits(IntPtr hemf, int cbBuffer, byte[] lpbBuffer);

    byte[] GetBytes(Image img)
    {
    // use interop to get the metafile bits
    Metafile mf = img as Metafile;
    var enhMetafileHandle = mf.GetHenhmetafile();
    var bufferSize = GetEnhMetaFileBits(enhMetafileHandle, 0, null);
    var buffer = new byte[bufferSize];
    GetEnhMetaFileBits(enhMetafileHandle, bufferSize, buffer);

    // return bits
    return buffer;
    }

Alternative Managed API:

Do you know one? Please contribute it!

Documentation