次の方法で共有


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

変換されたレコードを受け取るバッファーへのポインター。 pData16NULL の場合、Metafile::EmfToWmfBits は、変換されたメタファイル レコードを格納するために必要なバイト数を返します。

[in, optional] iMapMode

型: INT

省略可能。 変換されたメタファイルで使用するマッピング モードを指定します。 使用可能なマッピング モードの一覧については、「 SetMapMode」を参照してください。 既定値はMM_ANISOTROPICです。

[in, optional] eFlags

型: EmfToWmfBitsFlags

省略可能。 変換のオプションを指定する 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

関連項目

EmfType

GetWinMetaFileBits

メタファイル

メタファイル