Delphi Canvasで画像を塗りつぶす:FloodFillの使い方と境界色指定の実例
Delphiで画像を塗りつぶすには、Canvas.FloodFill関数が便利です。
このページでは、境界色(fsBorder)や塗りつぶし色を指定して、Bitmap画像の特定領域を塗りつぶす方法を、実際のコード例とともに紹介します。
Brushの設定やTextOutとの併用など、DelphiのCanvas操作に役立つポイントも解説しています。
(境界線の内側領域の塗りつぶし、指定色領域の塗りつぶし が可能です)
1.Canvas.FloodFill関数の第4引数「fsBorder」を指定(境界線の内側領域を塗りつぶす)
黒の境界線の内側領域を赤に塗りつぶす
procedure TForm1.Button1Click(Sender: TObject);
begin
//指定した境界色までの領域を現在Brushで塗りつぶし
//bmp.Canvas.FloodFill(
// 基準x,基準y,境界色, fsBorder
//);
//ブラシの色を赤に設定する
Image1.Picture.Bitmap.Canvas.Brush.Color:=clRed;
//黒色の境界の内側領域を、赤に塗る
Image1.Picture.Bitmap.Canvas.FloodFill(
60, 100, clBlack, fsBorder);
end;
2.Canvas.FloodFill関数の第4引数「fsSurface」を指定(指定色領域を塗りつぶす)
スカイブルー色の領域を赤に塗りつぶす
procedure TForm1.Button2Click(Sender: TObject);
begin
//指定した色で塗りつぶされている領域を現在のBrushで塗りつぶし
//bmp.Canvas.FloodFill(
// 基準x,基準y,塗りつぶされている色, fsSurface
//);
//ブラシの色を赤に設定する
Image1.Picture.Bitmap.Canvas.Brush.Color:=clRed;
//スカイブルー色の領域を、赤に塗る
Image1.Picture.Bitmap.Canvas.FloodFill(
60, 100, clSkyBlue, fsSurface);
end;
