こんばんは。いつも参考にさせていただいております。
今、PaintBox1.Canvas.LineToにて
グラフを描画したいと考えているのですが、Canvas.LineToは実数は扱えないと
ヘルプに書いてありますが、小数をグラフに描画したい場合どのようにすればよろしいのでしょうか。
よろしくお願いします。
LineToなどで扱うのは”ピクセル”なので、グラフで実数を扱うかどうかなんて言うのは別問題です。
何らかのルールを作って、実数を整数にマッピングして描画すればよいです(x10とか)。
image1とbutton1を用意し、image1を400x400にする。
sin(x)を0〜π/2まで描画します。
勿論、以下のコードはlinetoを使ったときの不具合が出ますが、これは宿題ということで。
描画したい範囲を400x400(の90%)にマッピングしています。各値は整数ではないですが、この程度の大きさがあれば整数に丸めても(グラフとして眺めるには)概ね大丈夫です。
-------------------------------------------
const
XWIDTH = 400;
YWIDTH = 400;
procedure TForm1.Button1Click(Sender: TObject);
var
yd,xd :double;
y,x :integer;
begin
xd := 0;
while xd < Pi/2 do
begin
yd := sin(xd);
x := round(xd /(Pi/2) * XWIDTH *0.9 + XWIDTH *0.05);
y := YWIDTH -round(yd * YWIDTH *0.9 + YWIDTH *0.05);
Image1.Canvas.LineTo(x,y);
xd := xd +0.1;
end;
end;
こんなのはどうでしょうか
http://blog.livedoor.jp/junki560/archives/17584026.html
ツイート | ![]() |