CreateEnhMetaFile 拡張メタファイルの新規作成

Cの宣言:

HDC CreateEnhMetaFile(
	HDC hDC,
	LPCTSTR MetaFileName,
	CONST RECT *r,
	LPCTSTR Description);

VBの宣言:

Declare Function CreateEnhMetaFile Lib "gdi32" Alias "CreateEnhMetaFileA" ( _
	ByVal hDC As Long, _
	ByVal MetaFileName As String, _
	ByRef r As RECT, _
	ByVal Description As String) As Long

説明:

拡張メタファイル作成用デバイスコンテキストを返却する。

返却されたデバイスコンテキストに対してGDI関数を呼び出すことにより、メタファイルを構成する図形が記録される。描画結果を元に拡張メタファイルを作成するには、CloseEnhMetaFileを使用する。

引数の意味は以下の通り。
hDC 拡張メタファイル用デバイスコンテキスト作成時に、デバイスの解像度などを決定するために参照されるデバイスを示すデバイスコンテキストのハンドル。NULLを指定可能。
MetaFileName 拡張メタファイルの保存先のファイル名。NULLを指定した場合、作成される拡張メタファイルはメモリ上の拡張メタファイルとなる。
r 拡張メタファイルの描画領域。0.01ミリ単位で指定する。NULLを指定可能。
Description メタファイルの作成元アプリケーション名および画像名を表すMULTI_SZ文字列。NULLを指定可能。

戻り値は、作成された拡張メタファイル用デバイスコンテキストのハンドルである。関数の実行に失敗した場合、NULLが返される。

VBのサンプル:

円を描画する拡張メタファイルを作成し、アプリケーション名および画像名を設定して"c:\pic\test.emf"という名前で保存する。
'拡張メタファイルの作成
Private Sub Command1_Click()

    Dim hDC As Long '拡張メタファイル用デバイスコンテキストのハンドル
    Dim hEmf As Long '拡張メタファイルのハンドル
    Dim r As RECT ' 拡張メタファイルの描画領域
    Dim Description As String 'アプリケーションと画像名
    
    '拡張メタファイルの描画領域を設定
    r.Left = 0
    r.Top = 0
    r.Right = 10000
    r.Bottom = 10000
    
    '作成元アプリケーションと画像名の設定
    Description = "sample application" & vbNullChar & "test picture" & vbNullChar & vbNullChar
    
    '拡張メタファイル用デバイスコンテキストを作成
    hDC = CreateEnhMetaFile(0, "c:\pic\test.emf", r, Description)

    '円を描画
    SetMapMode hDC, MM_HIMETRIC
    Ellipse hDC, 0, 0, 10000, -10000
    
    '拡張メタファイル用デバイスコンテキストのクローズ
    hEmf = CloseEnhMetaFile(hDC)
    
    '拡張メタファイルのクローズ
    DeleteEnhMetaFile hEmf

End Sub

(original text:2000/01/27 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。