−トップへ−

イメージコンポーネントを塗りつぶす

 コンポーネントの中には,プロパティでその色を指定できるものがありますが,イメージコンポーネントにはその色をコントロールするプロパティがありませ ん。そこで,次のようなコードでイメージコンポーネントを塗りつぶすことができます。
 まず,フォームにImageコンポーネントを貼り付け, Image1.Clickイベントハンドラを作成します。

procedure TForm1.Image1Click(Sender: TObject);
begin
 with image1.Canvas do
 begin
  brush.Color:=clblue; //塗る色を青にする
  fillrect (image1.Canvas.ClipRect); //「Image1.Canvas.ClipRect」はimage全体を表す
 end;
end;

 これを実行して,イメージコンポーネントをクリックすると,イメージコンポーネントが青色になります。
 また上のコードの中の 「Image1.Canvas.ClipRect」の部分を,Rect(40,50,80,100)とすると,
(40,50),(80,50),(80,100), (40,100)の4点を結んでできる長方形の部分だけ色を塗ります。

 これをもう少し変化させてみます。
 まず,Privateに変数iの整数宣言をします。その後,Image1.Clickイベントハンドラに下のように記述します。

type
 TForm1 = class(TForm)
  Image1: TImage;
  procedure Image1Click(Sender: TObject);
 private
  { Private 宣言 }
  i:integer; //←これを記述
 public
  { Public 宣言 }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Image1Click(Sender: TObject);
begin
 with image1.Canvas do
 begin
  case i of //iの値によって場合分けする
   0:brush.Color:=clgreen;  //iが0のとき色を緑にする
   1:brush.Color:=clyellow; //iが1のとき色を黄色にする
   2:brush.Color:=clred;   //iが2のとき色を赤にする
  end;
  fillrect(image1.Canvas.ClipRect); //イメージ全体に色を塗る
  inc(i);  //iに1を加える
  if i=3 then i:=0; //もしiが3ならiを0にする
 end;
end;

 これを実行し,Imageコンポーネントをクリックする と,イメージ部分の色が, 緑→黄色→赤→緑…,と変化します。

−トップへ−