다음을 통해 공유


Metafile::EmfToWmfBits 메서드(gdiplusheaders.h)

고급 형식 메타파일을 WMF(Windows 메타파일 형식) 메타파일로 변환하고 변환된 레코드를 지정된 버퍼에 저장합니다.

구문

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를 호출할 때 나중에 전달하는 eFlag에 대해 동일한 값을 전달해야 합니다. 그렇지 않으면 Metafile::EmfToWmfBits 에 대한 첫 번째 호출에서 반환되는 크기가 올바르지 않습니다.

이 메서드는 EmfTypeEmfPlusOnly 형식의 메타파일을 변환할 수 없습니다. 이 메서드를 사용하여 EmfTypeEmfPlusDual 형식의 메타파일을 변환하는 경우 해당 메타파일의 EMF(Enhanced Metafile) 레코드는 변환되지만 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

Metafile

메타파일