拡張メタファイルの描画          <TOP>


既存の拡張メタファイルを読み込み描画します。

GetEnhMetaFileDescription 拡張メタアプリケーション名の取得

GetEnhMetaFile 拡張メタファイルのオープン

PlayEnhMetaFile 拡張メタファイルの描画

DeleteEnhMetaFile 拡張メタファイルの削除

GetDC デバイスコンテキストのハンドルを取得

ReleaseDC デバイスコンテキストを解放

 

例では、拡張メタファイルの作成で作成されたメタファイルを読み込み描画しています。

 

'================================================================
'= 拡張メタファイルの描画
'=    (GetEnhMetaFileDescription.bas)
'================================================================
#include "Windows.bi"

Type RECT
    Left   As Long
    Top    As Long
    Right  As Long
    Bottom As Long
End Type

' 拡張メタアプリケーション名の取得
Declare Function Api_GetEnhMetaFileDescription& Lib "gdi32" Alias "GetEnhMetaFileDescriptionA" (ByVal hEmf&, ByVal DescSize&, ByVal Descrption$)

' 拡張メタファイルのオープン
Declare Function Api_GetEnhMetaFile& Lib "gdi32" Alias "GetEnhMetaFileA" (ByVal MetaFileName$)

' 拡張メタファイルの描画
Declare Function Api_PlayEnhMetaFile& Lib "gdi32" Alias "PlayEnhMetaFile" (ByVal hDC&, ByVal hEmf&, ByRef rct As RECT)

' 拡張メタファイルの削除
Declare Function Api_DeleteEnhMetaFile& Lib "gdi32" Alias "DeleteEnhMetaFile" (ByVal hEMF&)

' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

Var Shared Picture1 As Object
Var Shared Button1 As Object

Picture1.Attach GetDlgItem("Picture1")
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hDC As Long
    Var rct As RECT
    Var hEmf As Long
    Var Ret As Long

    'PictureBoxのデバイスコンテキスト取得
    hDC = Api_GetDC(Picture1.GethWnd)
    
    '既存拡張メタファイルオープン
    hEmf = Api_GetEnhMetaFile("C:\_FB_API_E\__C\tempEMF.emf")
    
    '描画領域を設定
    rct.Left = 0
    rct.Top = 0
    rct.Right = Picture1.GetWidth
    rct.Bottom = Picture1.GetHeight
    
    '拡張メタファイル描画
    Ret = Api_PlayEnhMetaFile(hDC, hEmf, rct)
    
    '拡張メタファイルクローズ
    Ret = Api_DeleteEnhMetaFile(hEmf)

    'デバイスコンテキスト解放
    Ret = Api_ReleaseDC(Picture1.GethWnd, hDC)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End