コラム / パイパイモンテカルロたん / 5



まずは、開始ボタンをダブルクリックして、
クリックされたよイベント の編集画面に飛びましょう。

img12.png

まず、ゴマを落とす部分を、
白く塗りつぶし、○を書いておきましょう。
PaintBox1は、TPaintBoxクラスのインスタンスですが、
TPaintBoxにお絵かきをするときは、
TPaintBox.Canvas
という、TCanvasクラスを使って書きます。
TMemoにTMemo.Linesを使って書き込んでいくようなものですね。
Canvasクラスの命令を少し紹介
procedure FillRect(const Rect: TRect); // 四角を塗りつぶす
procedure Ellipse(const Rect: TRect); overload; //○を描く

まぁ、これだけで十分か。
Canvasクラスは、
Penプロパティーにしたがって線を描き、
Brushプロパティーにしたがって塗りつぶします。
もしCanvasをピクセル単位で扱いたいときは、
Pixelsプロパティーを使います。
Canvas.Pixels[0,0]というように、
[x座標,y座標]と指定し、値はTColorです。
TColorには、
RGBの値を直接指定することもできますが、
単純な色は clRed と言った名前で既に定義してあるので、
それで十分です。
PenプロパティーはTPenクラスで、
Color、Style、Modeプロパティーがあります。
ColorはTColorですが、
StyleとModeはちょっと特殊です。
まぁ、適宜説明で。
BrushプロパティーはTBrushクラスで、
TBrushクラスには、
Color、Styleプロパティーがあります。
Colorは色、Styleはやっぱり特殊です。
適宜適宜。
まぁ説明はほどほどに、
コードに出てくるたびに適宜説明します。
さっそく以下のコードを書きましょう。
procedure TForm1.Button1Click(Sender: TObject);
begin
   with PaintBox1.Canvas do begin
       //ペンの設定
       Pen.Style:=psSolid;
       Pen.Mode:=pmCopy;
       Pen.Color:=clBlack;
       //ブラシの設定
       Brush.Style:=bsSolid;
       Brush.Color:=clWhite;
   end;
end;
新しくWith構文が出てきました。
書式は
with クラス do begin
    命令
end;
で、命令が普通に実行されていきます。
その時、命令の中の値には、
クラス.値 という時、クラス の部分の参照が不要になります。
今回なら、PenもBrushも、
PaintBox1.Canvas.Pen
PaintBox1.Canvas.Brush
と参照しなければいけないのですが、
withでくくっているから、PaintBox1.Canvas. の部分が省略できるのです。
まぁ、withは楽するための構文ですね。
中身のコードはというと、
ペンは スタイルをpsSolid 。
psSolidは、「実線」の値で、
他には、「破線」「点線」とかがあります。
モードは pmCopy で、「Colorプロパティーの値を使う」
という意味です。他の値使うこと滅多にないと思うんです。
色は、clBlackで黒を指定しました。
ブラシは、スタイルをbsSolid。
これが謎で、bsSolidは「塗りつぶす」 なんですが、
他の値は、線で塗りつぶすというか、シマシマ模様を作る値で、
そんな変な描画しないというか・・・
色はclWhiteで白を指定しました。
続きはまたあとで