|
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
Delphiにはグラフを描くためのメカニズムが見あたりませんが
どうすればグラフを表示できますか?
[A]
・ChartFXなどのOCXを使うと複雑なグラフを簡単に書けますが、OCXなので
再配布が面倒だったりします。
・TPaintBoxを張り付けて、このOnPaintイベントでPaintBoxのCanvasに
描画します。OnPaintイベントは
「描画が必要になったら」
呼び出されるイベントですから、描画をするためのタイミングとしては
ここがベストです。
データはあらかじめ配列などに準備しておいて、いつでも描画できる
ように待ちかまえていなければなりません。(=イベントドリブン)
データが更新されたりして積極的に書き直しをしたければ、PaintBox
のInvalidateメソッドを呼べば、OnPaintが自動的に呼ばれます。
なお、座標系はピクセル単位しかありませんので、換算は自分でやります。
[例]
Formにペイントボックスとボタンをはりつけます。
ボタンをおすとグラフが書き変わります。
type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
Button1: TButton;
procedure PaintBox1Paint(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
ArrY: array [1..10] of integer =
(10,20,30,40,50,60,70,80,90,100 );
implementation
{$R *.DFM}
procedure TForm1.PaintBox1Paint(Sender: TObject);
var i, X, Y: integer;
begin
with PaintBox1.Canvas do begin
Brush.Color := clWhite;
Rectangle(10,10,120,120);
Brush.Color := clBlue;
for i := 1 to 10 do begin
X := 10 + i * 10;
Y := 120 - ArrY[i];
Rectangle(X, 120, X+7, Y);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
inc(ArrY[5], 5);
PaintBox1.Invalidate;
end;
end.
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|