Як намалювати графік
Підкажіть як в Делфі побудувати графік по заданій функціі.І взагалі чи можна це зробити використовуючи стандартні засоби Delphi
см. компонент TChart
> І взагалі чи можна це зробити використовуючи стандартні засоби
> Delphi
звичайно можливо!
> Підкажіть як в Делфі побудувати графік по заданій функції
береш TCavas і малюєш.
Canvas.MoveTo (x, y); пересування в задану точку
Canvas.LineTo (x, y); лінія в задану точку
А можна детальніше а то в Делфі я новачок
Мені потрібно побудувати сінусойду, мені здається Canvas.LineTo не підійде, хоча може я помиляюся
> Мені потрібно побудувати сінусойду, мені здається Canvas.LineTo
> Не підійде, хоча може я помиляюся
Здається - хреститися треба.
Підкажіть де знаходитися компонент TCavas
TCanvas ніколи компонентом ні (і не буде).
як же не підходить.
тобі потрібно розрахувати графік
тобто приблизно так
пересуваєш точку на початку малювання MoveTo
Canvas.MoveTo (0, Canvas.height)
потім в циклі малюєш графік своєї функції
For i: = 0 to 800 do
# XA0; begin # XA0; # XA0; # XA0; # XA0; # XA0; # XA0;
# XA0; Canvas.LineTo (i, Sin (i));
# XA0; end;
Ps. сподіваюся у мене правильно мізки працюють
TCanvas (знову майстра на мене наїдуть) перебувати в Практично будь-якому візуальному компоненті. але краще використовувати PaintBox
> TCanvas (знову майстра на мене наїдуть) перебувати в Практично
> Будь-якому візуальному компоненті. але краще використовувати PaintBox
TCanvas - суть HDC. Є дійсно у багатьох візуальних компонентів (але далеко не у всіх). Не у всіх воно в public.
Неправильно, буде пряма лінія
> Неправильно, буде пряма лінія
ой ну да
Canvas.LineTo (i, Round (Sin (i) * 100));
А якщо все-таки звернутися до TChart?
Аргумент повинен бути в радіанах
викинь chart на форму, натисни два рази прав.кнопкой, натисни add Вибери тип графіка і експериментуй
приклад синуса при появі вікна:
procedure TForm1.FormActivate (Sender: TObject);
var
k: Integer;
begin
for k: = 0 to 20 do
Chartl.SeriesList [0] .AddXY (k, sin (k * pi / 10), "", clRed);
end;
стандартно.
Ось код з DRKB. Малює графік функції.
procedure TForm1.Button3Click (Sender: TObject);
var x, y: array [1..50] of double;
# XA0; i: integer;
# XA0; scalex, scaley, ymin, ymax, xmin, xmax: double;
begin
# XA0; for i: = 1 to 50 do
# XA0; # XA0; begin
# XA0; # XA0; # XA0; y [i]: = sin (i * 0.5);
# XA0; # XA0; # XA0; x [i]: = i;
# XA0; # XA0; end;
# XA0; xmin: = x [1];
# XA0; xmax: = x [1];
# XA0; ymin: = y [1];
# XA0; ymax: = y [1];
# XA0; for i: = 2 to 50 do
# XA0; # XA0; begin // або використовуйте ymin: = MinValue (y); і т.д.
# XA0; # XA0; # XA0; if y [i]
# XA0; # XA0; # XA0; if x [i]
# XA0; # XA0; end;
# XA0; scalex: = paintbox1.Width / (xmax - xmin);
# XA0; scaley: = paintbox1.Height / (ymax - ymin);
# XA0; with paintbox1.canvas do
# XA0; # XA0; begin
# XA0; # XA0; # XA0; moveto (trunc (scalex * (x [1] - xmin)), paintbox1.height - trunc (scaley * (y [1] - ymin)));
# XA0; # XA0; # XA0; for i: = 2 to 50 do
# XA0; # XA0; # XA0; # XA0; Lineto (trunc (scalex * (x [i] - xmin)), paintbox1.height - trunc (scaley * (y [i] - ymin)));
# XA0; # XA0; end;
end;
MoveTo / LineTo краще замінити Windows.PolyPolyLine
Пам'ять: 0.75 MB
Час: 0.046 c