Поделиться через


Метод 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

Указатель на буфер, который получает преобразованные записи. Если pData16 имеет значение NULL, Metafile::EmfToWmfBits возвращает количество байтов, необходимых для хранения преобразованных записей метафайлов.

[in, optional] iMapMode

Тип: INT

Необязательный элемент. Указывает режим сопоставления для использования в преобразованном метафайле. Список возможных режимов сопоставления см. в разделе SetMapMode. Значение по умолчанию — MM_ANISOTROPIC.

[in, optional] eFlags

Тип: EmfToWmfBitsFlags

Необязательный элемент. Элемент перечисления EmfToWmfBitsFlags , указывающий параметры преобразования. Значение по умолчанию — EmfToWmfBitsFlagsDefault.

Возвращаемое значение

Тип: UINT

Если метод завершается успешно и указатель буфера имеет значение NULL, возвращаемое значение — это количество байтов, необходимых для хранения преобразованных записей. Если метод выполнен успешно, а указатель буфера является допустимым указателем, возвращаемое значение — это размер данных метафайла в байтах. Если метод завершается сбоем, возвращаемое значение равно нулю.

Комментарии

При вызове Metafile::EmfToWmfBits для определения размера требуемого буфера необходимо передать то же значение для eFlags , которое вы передаете позже при вызове Metafile::EmfToWmfBits для выполнения преобразования. В противном случае размер, возвращаемый при первом вызове 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
Header gdiplusheaders.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

EmfType

GetWinMetaFileBits

Метафайл

Метафайлы