円を描く
Delphiでは、単に円をフォームに表示するだけならプログラムを書く必要はありません。Shapeコンポーネントを貼り付けてShapeプロパティをstCircleにすれば円を表示できます。
これでは、簡単すぎて例にならないので、ここではCanvasを使ってフォームに直接、円を描画してみます。CanvasはWindowsのグラフィックス機能をカプセル化したオブジェクトで、フォームのメンバオブジェクトの1つとして用意されています。
この例では、円を描くだけではつまらないので、カラーコモンダイアログを表示して円の色を変更できるようになっています。
カラーダイアログはフォームをクリックすると表示されます。これはOnClickイベントに応答して行っています。円の色を変更するのは、Cnavas.Brush.Colorの値を変更することにより行います。ただし、これだけでは、実際の表示色は変更されないので、フォームのRepaintメソッドによって、新しい色で円を再描画させます。
カラーの初期値はOnCreateイベントに応答して設定しています。
フォームのサイズが変更されらRepaintによって円の大きさもフォームに合わせるようにしています。これは、OnResizeイベントに応答して行います。
ソース(青色の部分が記述した部分です。黒の部分はDelphiが生成した部分です)
unit Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; type TForm1 = class(TForm) ColorDialog1: TColorDialog; procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormClick(Sender: TObject); private { Private 宣言 } FColor: TColor; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} { 描画要求があったとき } procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Ellipse(2, 2, Height - 30, Height - 30); end; { フォームが作成されたとき } procedure TForm1.FormCreate(Sender: TObject); begin // 円の色の初期値(緑) Canvas.Brush.Color := $00ff00; // ウィンドウを正方形にする。 if Width > Height then Width := Height else Height := Width; end; { ウィンドウのサイズが変更されたとき } procedure TForm1.FormResize(Sender: TObject); begin // ウィンドウを正方形にする。 if Width > Height then Width := Height else Height := Width; // 描画要求 Repaint; end; { クリックされたとき } procedure TForm1.FormClick(Sender: TObject); begin // OKボタンが押されたかチェック if ColorDialog1.Execute = True then begin // 円の色を変更する Canvas.Brush.Color := ColorDialog1.Color; Repaint; end; end; end.