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
변환된 레코드를 수신하는 버퍼에 대한 포인터입니다. pData16이 NULL인 경우 Metafile::EmfToWmfBits는 변환된 메타파일 레코드를 저장하는 데 필요한 바이트 수를 반환합니다.
[in, optional] iMapMode
형식: INT
(선택 사항) 변환된 메타파일에서 사용할 매핑 모드를 지정합니다. 가능한 매핑 모드 목록은 SetMapMode를 참조하세요. 기본값은 MM_ANISOTROPIC.
[in, optional] eFlags
(선택 사항) 변환 옵션을 지정하는 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 |