−トップへ−

時計を作る
その1 文字盤を作る1

はじめに

 今回は,時計を作ってみます。今回は時計ですので,丸い文字盤をデスクトップに表示させてみたいと思います。

透明なフォームを作る

 透明なフォームを作るのは簡単ですので,早速プログラムを記述してみます。
 
 まず,formにimegeコンポーネントを貼り付けて,FormCreateを呼び出します。

 type
  TForm1 = class(TForm)
  Image1: TImage;
  procedure FormCreate(Sender: TObject);
 private
  { Private 宣言 }
  size:integer; //sizeは時計の文字盤の半径の大きさにします
 public
  { Public 宣言 }
 end;
  :
  :
  :
 procedure TForm1.FormCreate(Sender: TObject);
 begin
  size:=100; //sizeをとりあえず100にします
  form1.ClientWidth:=size*2; //フォームの内側の幅をsizeの2倍にします
  form1.ClientHeight:=size*2; //フォームの内側の高さをsizeの2倍にします
  form1.TransparentColor:=true; //フォームを透明にします
  form1.TransparentColorValue:=clred; //フォームの透明色を赤にします
  form1.Color:=clred; //フォームの色を赤にします
 end;
 
 
 end.

 これだけ記述して実行すると下のようになります。この段階でフォームの内部が透明になっています。透明色を赤にしたのは,時計ではまず使われない色だからですが,別な色にすることもできます。この段階で周りの枠を非表示すると,フォームが全く見えなくなってしまうので枠を消すのは最後にします。
 
 
次に,この透明なフォームに文字盤である円を表示させます。

 type
  TForm1 = class(TForm)
  Image1: TImage;
  procedure makeban; //←これを記述して,[Shift]+[Ctrl]+[C]を押すと新しいプロシージャが生成されます
  procedure FormCreate(Sender: TObject);
 private
  { Private 宣言 }
  size:integer; //sizeは時計の文字盤の半径の大きさにします
 public
  { Public 宣言 }
 end;
  :
  :
  :
 procedure TForm1.FormCreate(Sender: TObject);
 begin
  size:=100; //sizeをとりあえず100にします
  form1.ClientWidth:=size*2; //フォームの内側の幅をsizeの2倍にします
  form1.ClientHeight:=size*2; //フォームの内側の高さをsizeの2倍にします
  form1.TransparentColor:=true; //フォームを透明にします
  form1.TransparentColorValue:=clred; //フォームの透明色を赤にします
  form1.Color:=clred; //フォームの色を赤にします
  image1.left:=0; //image1のX座標を0にします
  image1.Top:=0; //image1のY座標を0にします
  image1.Width:=form1.ClientWidth; //image1の幅をform1の内側の幅と同じにします
  image1.Height:=form1.ClientHeight; //image1の高さをform1の内側の高さと同じにします
  makeban; //←これを記述
 end;

 procedure TForm1.makeban; //これが新しく生成されたプロシージャです
 var
  w:integer; //変数wを整数宣言します(文字盤の枠の太さを表すために使用します)
 begin
  w:=size div 30; //wの大きさをsizeの30分の1にしてみます
  with image1.Canvas do begin
   brush.Color:=clred; //ブラシの色を赤にして
   fillrect(image1.ClientRect); //image1のcanvasを赤で塗りつぶします(これで透明になります)
   brush.Color:=$fafafa; //次にブラシの色を灰色っぽい白にして
   brush.Style:=bssolid; //ブラシの塗りつぶしのスタイルを「bssolid」にします
   pen.color:=$cccccc; //ペンの色を灰色にします(これが枠の色になります)
   pen.width:=w * 2; //ペンの太さを変数「w」の2倍にします
   Ellipse(w,w,image1.Width-w,image1.Height-w); //円を描きます
  end;
 end;

 end.

上記を記入して実行すると下図のようになります。


次回はこの文字盤に目盛をつけてみます。

−トップへ−