delphi.gif (306 バイト) Canvasの使い方


Delphiでは、C++などのクラスライブラリで必要なグラフィック処理がTCanvasを使うことで見事に単純化されています。Delphiでは、グラフィックを扱うとき画用紙に絵や文字を描くようにCanvasにメソッドを使いって描けばよいのです。

CanvasはFormだけではなく、いろいろなコントロールのプロパティとして存在します。これらはTCanvas型なので、使い方は共通です。

サンプル

 

toach.gif (917 バイト) TCanvasのプロパティ

  property type
blubtn.gif (878 バイト) Brush TBrush
  ClipRect TRect
  CopyMode TCopyMode
blubtn.gif (878 バイト) Font TFont
  Handle HDC
  LockCount Integer
blubtn.gif (878 バイト) Pen TPen
  PenPos TPoint
  Pixels array of TColor

blubtn.gif (878 バイト) 下位のオブジェクトを持つプロパティ

 

toach.gif (917 バイト) TCanvasのメソッド

method function
procedure Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer); 弧をイメージ上に描画
procedure BrushCopy(const Dest: TRect; Bitmap: TBitmap; const Source: TRect; Color: TColor); ビットマップの一部をキャンバスの一部にコピーし,ビットマップの色の 1 つをコピー先キャンバスのブラシで置換します。
procedure Chord(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer); 線と楕円の交点で表現される閉じた図形を描画します。
procedure CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect); キャンバスのイメージの一部を別のキャンバスにコピーします。
Create; コンストラクタ
Destroy; デストラクタ
procedure Draw(X, Y: Integer; Graphic: TGraphic); Graphic パラメータで指定したグラフィックを,座標(X, Y)で定義されるキャンバス上の位置に描画します。
procedure DrawFocusRect(const Rect: TRect); 四角形内のオブジェクトがフォーカスを受け取ったことを示すのに使うスタイルで四角形を描画します。
procedure Ellipse(X1, Y1, X2, Y2: Integer); 外接長方形で定義される楕円をキャンバスに描画します。
procedure FillRect(const Rect: TRect); FillRect メソッドはキャンバス上の指定した四角形を現在のブラシで塗りつぶします。
procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle); FloodFill メソッドは,現在のブラシを使ってキャンバス上の領域を塗りつぶします。
procedure FrameRect(const Rect: TRect); 境界を作成するキャンバスのブラシを使って長方形を描画します。
procedure LineTo(X, Y: Integer); PenPos プロパティで指定されるキャンバス上の位置から,X と Y で指定される座標まで線を引き,ペン位置を(X, Y)に設定します。
procedure Lock; 他のスレッドがキャンバスに描画できないようにします。
procedure MoveTo(X, Y: Integer); 現在の描画位置を座標(X, Y)に変更します。
procedure Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint); キャンバス上の四角形(X1, Y1)と(X2, Y2)に外接する楕円の扇形を描画します。
procedure Polygon(Points: array of TPoint); 与えられた点を結んでキャンバス上に一連の線を描画してから,最後の点から最初の点へ線を描画して閉じた図形にします。
procedure Polyline(Points: array of TPoint); 現在のペンを使って,Points で渡された個々の点を結んでキャンバス上に連続線を描画します。
procedure Rectangle(X1, Y1, X2, Y2: Integer); 点(X1, Y1)を左上隅,点(X2, Y2)を右下隅としてキャンバス上に長方形を描画します。
procedure Refresh; デバイスコンテキストでの Pen,Brush,および Font の選択を解除します。
procedure RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer); 角の丸い長方形をキャンバス上に描画します。
procedure StretchDraw(const Rect: TRect; Graphic: TGraphic); Rect パラメータで指定した四角形の中に Graphic パラメータで指定したグラフィックを描画します。
function TextExtent(const Text: string): TSize; 現在のフォントで描画された文字列の幅と高さ(ピクセル数)を返します。
function TextHeight(const Text: string): Integer; 現在のフォントで描画された文字列の高さをピクセル単位で返します。
function TextHeight(const Text: string): Integer; 現在のフォントで描画された文字列の高さをピクセル単位で返します。
procedure TextOut(X, Y: Integer; const Text: string); キャンバス上に座標(X, Y)から文字列を描画して,PenPos の値を文字列の最後の値に更新します。
procedure TextRect(Rect: TRect; X, Y: Integer; const Text: string); クリッピングする四角形に文字列を書き込みます。
function TextWidth(const Text: string): Integer; 現在のフォントで描画された文字列の幅をピクセル単位で返します。
function TryLock: Boolean; 現在ロックれていないキャンバスをロックします。
procedure Unlock; ockCount プロパティをデクリメントして,ゼロになったときに他のスレッドで実行できるようにします。