;同色範囲の塗りつぶし #include "llmod.as" #module #deffunc paint int,int mref x,0 ;塗りつぶしを開始する座標x mref y,1 ;塗りつぶしを開始する座標y mref bmscr,67 prm=bmscr.4,bmscr.36 ;bmscr.4はデバイスコンテキストハンドル ;bmscr.36はcolor命令で設定された色のブラシハンドル dllproc "SelectObject",prm,2,D_GDI ;ブラシの割り当て hbrush=dllret@ ;オリジナルのブラシハンドル pget x,y ;開始座標の色取得 prm=bmscr.4,x,y,(bval<<16)+(gval<<8)+rval,1 ;(bval<<16)+(gval<<8)+rvalは開始座標の色データ ;最後の1はFLOODFILLSURFACE(色データを塗りつぶし領域の色とする) dllproc "ExtFloodFill",prm,5,D_GDI ;塗りつぶし描画 prm=bmscr.4,hbrush dllproc "SelectObject",prm,2,D_GDI ;オリジナルのブラシを戻す return #global randomize screen 0,300,300 repeat 10 ;適当に線を描く color 255 rnd st,winx : rnd en,winx line st,-1,en,winy rnd st,winy : rnd en,winy line -1,st,winx,en loop onclick *click stop *click color ,255 paint mousex,mousey ;塗りつぶし redraw ;再描画 stop |