文字列を描画([) <TOP>
CreateFont
指定の属性を持つ論理フォントを作成
CreateSolidBrush ソリッドカラーで論理ブラシを作成
SelectObject 指定されたデバイスコンテキストのオブジェクトを選択
BeginPath
hDCで指定されたデバイスコンテキストのパスの作成
SetBkMode
バックグラウンドの塗りつぶしモード設定
TextOut
文字を描画
EndPath
BeginPathで開始したパスの作成を終了
StrokePath
選択されているパスを選択されているペンを使用して描画
FillPath
選択されているブラシによってパスの内部を塗りつぶす
DeleteObject
関連付けられていたすべてのシステムリソースを解放
StrokeAndFillPath パスを描画し、その内部を選択されているブラシによって塗りつぶす
GetDCデバイスコンテキストのハンドルを取得
ReleaseDC
デバイスコンテキストを解放
LOGFONT構造体を使用せず、CreateFontでフォント名を指定しています。
参照
'================================================================ '= 文字列を描画([) '= (StrokePath2.bas) '================================================================ #include "Windows.bi" ' 指定の属性を持つ論理フォントを作成 Declare Function Api_CreateFont& Lib "gdi32" Alias "CreateFontA" (ByVal Hei&, ByVal Wid&, ByVal Esc&, ByVal Ori&, ByVal Wei&, ByVal Ita&, ByVal Und&, ByVal Stk&, ByVal Chr&, ByVal Out&, ByVal Clp&, ByVal Qua&, ByVal Pit&, ByVal Face$) ' ソリッドカラーで論理ブラシを作成 Declare Function Api_CreateSolidBrush& Lib "gdi32" Alias "CreateSolidBrush" (ByVal crColor&) ' 指定されたデバイスコンテキストのオブジェクトを選択 Declare Function Api_SelectObject& Lib "gdi32" Alias "SelectObject" (ByVal hDC&, ByVal hObject&) ' hDCで指定されたデバイスコンテキストのパスの作成 Declare Function Api_BeginPath& Lib "gdi32" Alias "BeginPath" (ByVal hDC&) ' バックグラウンドの塗りつぶしモード設定 Declare Function Api_SetBkMode& Lib "gdi32" Alias "SetBkMode" (ByVal hDC&, ByVal iBkMode&) ' 文字を描画 Declare Function Api_TextOut& Lib "gdi32" Alias "TextOutA" (ByVal hDC&, ByVal nXStart&, ByVal nYStart&, ByVal lpString$, ByVal cbString&) ' BeginPathで開始したパスの作成を終了 Declare Function Api_EndPath& Lib "gdi32" Alias "EndPath" (ByVal hDC&) ' 選択されているパスを選択されているペンを使用して描画する Declare Function Api_StrokePath& Lib "gdi32" Alias "StrokePath" (ByVal hDC&) ' 選択されているブラシによってパスの内部を塗りつぶす Declare Function Api_FillPath& Lib "gdi32" Alias "FillPath" (ByVal hDC&) ' 論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放 Declare Function Api_DeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject&) ' パスを描画し、その内部を選択されているブラシによって塗りつぶす Declare Function Api_StrokeAndFillPath& Lib "gdi32" Alias "StrokeAndFillPath" (ByVal hDC&) ' 指定されたウィンドウのデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) #define TRANSPARENT 1 '背景色を設定しない #define FW_BOLD 700 'LOGFONT(lfWeight) #define vbWhite &HFFFFFF '白のカラーコード Var Shared Button1 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var txt As String Var hDC As Long Var Size As Long Var rFont As Long Var hBrush As Long Var oldBrush As Long Var Ret As Long txt = "札幌市" Size = 50 hDC = Api_GetDC(GethWnd) rFont = Api_CreateFont(Size, 0, 0, 0, 700, 0, 0, 0, 1, 0, 0, 0, 0, "DCGクリスタルW5") '論理フォントを作成 Ret = Api_SelectObject(hDC, rFont) '指定されたデバイスコンテキストのオブジェクトを選択 hBrush = Api_CreateSolidBrush(RGB(255, 255, 0)) 'ブラシを作成 oldBrush = Api_SelectObject(hDC, hBrush) 'オブジェクトを選択 Ret = Api_SetBkMode(hDC, TRANSPARENT) '背景の塗り潰しモードを設定 Ret = Api_BeginPath(hDC) 'パスブラケットオープン Ret = Api_TextOut(hDC, 10, 0, txt, Len(txt)) 'テキスト描画 Ret = Api_EndPath(hDC) 'パスブラケットクローズ Ret = Api_StrokePath(hDC) '輪郭を描画 Ret = Api_BeginPath(hDC) '次のパスブラケットオープン Ret = Api_TextOut(hDC, 10, Size, txt, Len(txt)) 'テキスト描画 Ret = Api_EndPath(hDC) 'パスブラケットクローズ Ret = Api_FillPath(hDC) '指定のブラシで塗りつぶす hBrush = Api_CreateSolidBrush(RGB(255, 0, 255)) 'ブラシを作成 oldBrush = Api_SelectObject(hDC, hBrush) 'オブジェクトを選択 Ret = Api_BeginPath(hDC) '次のパスブラケットオープン Ret = Api_TextOut(hDC, 10, Size * 2, txt, Len(txt)) 'テキスト描画 Ret = Api_EndPath(hDC) 'パスブラケットクローズ Ret = Api_StrokeAndFillPath(hDC) '指定のブラシで塗りつぶすとともに、輪郭を描画 Ret = Api_SelectObject(hDC, oldBrush) 'ブラシをオリジナルのものに選択 Ret = Api_DeleteObject(hBrush) 'ブラシを削除 Ret = Api_ReleaseDC(GethWnd, hDC) 'デバイスコンテキストを解放 End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End