領域の塗り潰しのテスト(V) <TOP>
指定領域内を塗り潰すテスト
FloodFill 塗り潰しの指定(Win32アプリケーションでは、ExtFloodFill関数を使う)
CreateSolidBrush 塗り潰し指定
CreateHatchBrush ハッチ指定
SelectObject グラフィックオブジェクトをデバイスコンテキストと関連付ける
DeleteObject オブジェクトの削除
GetDC フォームのデバイスコンテキスト取得
ReleaseDC フォームのデバイスコンテキスト解放
'================================================================
'= 領域の塗り潰し
'= (FloodFill.bas)
'= ExtFloodFill.bas参照
'================================================================
#include "Windows.bi"
#define FLOODFILLBORDER 0 '塗りつぶし領域がcrColorで指定された色に囲まれている範囲
#define FLOODFILLSURFACE 1 'crColorで指定された色の領域(指定色がある限り塗りつぶし)
' 画面の領域を現在のブラシで塗りつぶ(Win32 アプリケーションでは、ExtFloodFill 関数を使う)
Declare Function Api_FloodFill& Lib "gdi32" Alias "FloodFill" (ByVal hDC&, ByVal x&, ByVal y&, ByVal crColor&)
' ソリッドカラーで論理ブラシを作成
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_Ellipse& Lib "gdi32" Alias "Ellipse" (ByVal hDC&, ByVal X1&, ByVal Y1&, ByVal X2&, ByVal Y2&)
' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)
' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)
'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
Circle(120, 104), 90, 0
Line(0, GetHeight - 31)-(GetWidth - 7, 0),, 0
Line(0, 0)-(GetWidth - 7, GetHeight - 31),, 0
End Sub
'================================================================
'= 塗り潰し
'================================================================
Declare Sub MainForm_MouseDown edecl (ByVal Button%, ByVal Shift%, ByVal SX!, ByVal SY!)
Sub MainForm_MouseDown(ByVal Button%, ByVal Shift%, ByVal SX!, ByVal SY!)
Var hDC As Long
Var hBr As Long
Var rgbColor As Long
Var Ret As Long
Randomize(Time)
rgbColor = RGB(Rnd(1) * 255, Rnd(1) * 255, Rnd(1) * 255)
hDC = Api_GetDC(GethWnd)
hBr = Api_CreateSolidBrush(rgbColor)
Ret = Api_SelectObject(hDC, hBr)
Ret = Api_FloodFill(hDC, SX!, SY!, FLOODFILLBORDER)
'ブラシの解放
Ret = Api_DeleteObject(hBr)
'デバイスコンテキストの解放
Ret = Api_ReleaseDC(hBr, hDC)
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End