指定領域(長方形)を除外する <TOP>
ExcludeClipRect
既存のクリッピング領域から、指定された長方形の領域を取り除く
ExtFloodFill
現在選択されているブラシで一定の範囲内を塗りつぶす
CreateSolidBrush
ソリッドカラーで論理ブラシを作成
SelectObject
指定されたデバイスコンテキストのオブジェクトを選択
DeleteObject
システムリソースを解放
GetDC
デバイスコンテキストのハンドルを取得
ReleaseDC
デバイスコンテキストを解放
例では、指定した領域を除外し塗りつぶしを実行しています。
'================================================================ '= 指定領域を除外する
'= (ExcludeClipRect.bas)
'================================================================ #include "Windows.bi" ' 既存のクリッピング領域から、指定された長方形の領域を取り除く Declare Function Api_ExcludeClipRect& Lib "gdi32" Alias "ExcludeClipRect" (ByVal hDC&, ByVal X1&, ByVal Y1&, ByVal X2&, ByVal Y2&) ' 現在選択されているブラシで一定の範囲内を塗りつぶす Declare Function Api_ExtFloodFill& Lib "gdi32" Alias "ExtFloodFill" (ByVal hDC&, ByVal X&, ByVal Y&, ByVal crColor&, ByVal wFillType&) ' ソリッドカラーで論理ブラシを作成 Declare Function Api_CreateSolidBrush& Lib "gdi32" Alias "CreateSolidBrush" (ByVal crColor&) ' 指定されたデバイスコンテキストのオブジェクトを選択 Declare Function Api_SelectObject& Lib "gdi32" Alias "SelectObject" (ByVal hDC&, ByVal hObject&) ' ペン、ブラシ、フォント、ビットマップ、リージョン、パレットのいずれかの論理オブジェクトを削除し、そのオブジェクトに関連付けられていたすべてのシステムリソースを解放。オブジェクトを削除した後は、指定されたハンドルは無効になる Declare Function Api_DeleteObject& Lib "gdi32" Alias "DeleteObject" (ByVal hObject&) ' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得 Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&) ' デバイスコンテキストを解放 Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&) #define FLOODFILLBORDER 0 'crColorで指定した色が囲んでいる領域を、塗りつぶす #define FLOODFILLSURFACE 1 'crColorで指定した色と同じ色になっている領域を、塗りつぶす '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hDC As Long Var hBrush As Long Var hOldBrush As Long Var Ret As Long hDC = Api_GetDC(GethWnd) hBrush = Api_CreateSolidBrush(RGB(239, 235, 222)) hOldBrush = Api_SelectObject(hDC, hBrush) 'クリッピング領域から除く Ret = Api_ExcludeClipRect(hDC, 30, 30, 120, 70) Ret = Api_ExtFloodFill(hDC, 1, 1, 0, FLOODFILLBORDER) Ret = Api_DeleteObject(hBrush) Ret = Api_ReleaseDC(GethWnd, hDC) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End