共用方式為


Metafile::EmfToWmfBits 方法 (gdiplusheaders.h)

將增強格式中繼檔轉換成 Windows Metafile Format (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

接收已轉換記錄之緩衝區的指標。 如果 pData16NullMetafile::EmfToWmfBits 會傳回儲存已轉換中繼檔記錄所需的位元組數目。

[in, optional] iMapMode

類型: INT

選擇性。 指定要在轉換的中繼檔中使用的對應模式。 如需可能的對應模式清單,請參閱 SetMapMode。 預設值為 MM_ANISOTROPIC。

[in, optional] eFlags

類型: EmfToWmfBitsFlags

選擇性。 EmfToWmfBitsFlags列舉的元素,指定轉換的選項。 預設值為 EmfToWmfBitsFlagsDefault

傳回值

類型: UINT

如果方法成功且緩衝區指標為 Null,則傳回值是儲存已轉換記錄所需的位元組數目。 如果方法成功,且緩衝區指標是有效的指標,則傳回值會是位元組的中繼檔資料大小。 如果方法失敗,則傳回值為零。

備註

當您呼叫Metafile::EmfToWmfBits來判斷所需緩衝區的大小時,您必須針對稍後呼叫Metafile::EmfToWmfBits時所傳遞的eFlags傳遞相同的值,才能執行轉換。 否則,第一次呼叫 Metafile::EmfToWmfBits 所傳回的大小將會不正確。

這個方法無法轉換 EmfTypeEmfPlusOnly類型的中繼檔。 如果您使用此方法來轉換 EmfTypeEmfPlusDual類型的中繼檔,則會轉換該元檔中的增強中繼檔 (EMF) 記錄,但不會轉換 EMF+ 記錄。

這個方法會將增強的中繼檔轉換成 WMF 中繼檔,讓其圖片可以顯示在可辨識舊格式的應用程式中。

Metafile::EmfToWmfBits方法不會使增強的中繼檔控制碼失效。 呼叫 DeleteEnhMetaFile 函式,以在不再需要控制碼時釋出控制碼。

若要建立可調整的 WMF 中繼檔,請將 MM_ANISOTROPIC 指定為 iMapMode 參數。

範例

下列範例會將增強格式的中繼檔轉換為 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)
程式庫 Gdiplus.lib
Dll Gdiplus.dll

另請參閱

EmfType

GetWinMetaFileBits

中繼檔

中繼檔