Metafile::EmfToWmfBits メソッド (gdiplusheaders.h)
拡張形式のメタファイルを Windows メタファイル形式 (WMF) メタファイルに変換し、変換されたレコードを指定されたバッファーに格納します。
構文
UINT EmfToWmfBits(
[in] HENHMETAFILE hemf,
[in] UINT cbData16,
[out] LPBYTE pData16,
[in, optional] INT iMapMode,
[in, optional] INT eFlags
);
パラメーター
[in] hemf
種類: HENHMETAFILE
変換する拡張形式のメタファイルを処理します。
[in] cbData16
型: UINT
pData16 パラメーターによって指されるバッファー内のバイト数を指定する符号なし整数。
[out] pData16
種類: LPBYTE
変換されたレコードを受け取るバッファーへのポインター。 pData16 が NULL の場合、Metafile::EmfToWmfBits は、変換されたメタファイル レコードを格納するために必要なバイト数を返します。
[in, optional] iMapMode
型: INT
省略可能。 変換されたメタファイルで使用するマッピング モードを指定します。 使用可能なマッピング モードの一覧については、「 SetMapMode」を参照してください。 既定値はMM_ANISOTROPICです。
[in, optional] eFlags
省略可能。 変換のオプションを指定する EmfToWmfBitsFlags 列挙体の要素。 既定値は EmfToWmfBitsFlagsDefault です。
戻り値
型: UINT
メソッドが成功し、バッファー ポインターが NULL の場合、戻り値は変換されたレコードを格納するために必要なバイト数です。 メソッドが成功し、バッファー ポインターが有効なポインターである場合、戻り値はメタファイル データのサイズ (バイト単位) です。 メソッドが失敗した場合、戻り値は 0 になります。
解説
Metafile::EmfToWmfBits を呼び出して必要なバッファーのサイズを決定する場合は、後で Metafile::EmfToWmfBits を呼び出して変換を実行するときに渡すのと同じ値を eFlags に渡す必要があります。 それ以外の場合、 Metafile::EmfToWmfBits の最初の呼び出しによって返されるサイズが正しくありません。
このメソッドは、 EmfTypeEmfPlusOnly 型のメタファイルを変換できません。 このメソッドを使用して EmfTypeEmfPlusDual 型のメタファイルを変換すると、そのメタファイル内の拡張メタファイル (EMF) レコードは変換されますが、EMF+ レコードは変換されません。
このメソッドは、拡張メタファイルを WMF メタファイルに変換して、その画像を古い形式を認識するアプリケーションで表示できるようにします。
Metafile::EmfToWmfBits メソッドは、拡張メタファイル ハンドルを無効にしません。 DeleteEnhMetaFile 関数を呼び出して、不要になったハンドルを解放します。
スケーラブルな WMF メタファイルを作成するには、 iMapMode パラメーターとして MM_ANISOTROPIC を指定します。
例
次の例では、拡張形式のメタファイルを WMF メタファイルに変換します。 Metafile::EmfToWmfBits に渡される最後のパラメーターは、拡張形式のメタファイルが変換されたメタファイルにコメントとして埋め込まれるように指定します。
// Construct a Metafile object from an existing EMF disk file.
Metafile myMetafile(L"SourceMetafile.emf");
// Get a handle to the EMF metafile.
HENHMETAFILE hEmf = myMetafile.GetHENHMETAFILE();
// Determine the size of the buffer that will receive the converted records.
UINT size = Metafile::EmfToWmfBits(
hEmf,
0,
NULL,
MM_ANISOTROPIC,
EmfToWmfBitsFlagsEmbedEmf);
// Allocate a buffer to receive the converted records.
BYTE* buffer = new BYTE[size];
// Convert the EMF records to WMF records.
INT convertedSize = Metafile::EmfToWmfBits(
hEmf,
size,
buffer,
MM_ANISOTROPIC,
EmfToWmfBitsFlagsEmbedEmf);
// Get a handle to the converted metafile.
HMETAFILE hmf = SetMetaFileBitsEx(size, buffer);
// Write the WMF metafile to a disk file.
CopyMetaFile(hmf, TEXT("ConvertedMetafile.wmf"));
DeleteMetaFile(hmf);
DeleteEnhMetaFile(hEmf);
delete[] buffer;
要件
サポートされている最小のクライアント | Windows XP、Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | gdiplusheaders.h (Gdiplus.h を含む) |
Library | Gdiplus.lib |
[DLL] | Gdiplus.dll |