Cum de a desena un grafic

Cum de a desena un grafic

Întrebați cum să construiți programul pentru funcția setată și, în general, este posibil să o utilizați cu ajutorul mijloacelor standard Delphi

consultați componenta TChart








> Și dacă, în general, este posibil să se facă prin mijloace standard
> Delphi

cu siguranță este posibil să faci!

> Spuneți-mi cum să construiți un grafic în Delphi cu o funcție dată

Luați TCavas și trageți.
Canvas.MoveTo (x, y); trecerea la un punct dat
Canvas.LineTo (x, y); line la un punct dat

Și este posibil mai mult în detaliu și în delhi I începător

Trebuie să construiesc un sinusoid, cred că Canvas.LineTo nu va funcționa, deși poate că mă înșel


> Trebuie să construiesc un sinusoid, mi se pare Canvas.LineTo
> nu este potrivit, deși poate greșesc

Se pare - trebuie să fii botezat.

Spuneți-mi unde să găsiți componenta TCavas

TCanvas nu a fost niciodată o componentă (și nu va fi).

cum nu se potrivește.
trebuie să calculați graficul
și anume aproximativ așa
mutați punctul la începutul desenului MoveTo
Canvas.MoveTo (0, Canvas.height)
apoi într-un ciclu, trageți un grafic al funcției dvs.
Pentru i: = 0 la 800 nu
# xA0; începeți # xA0; # xA0; # xA0; # xA0; # xA0; # xA0;
# xA0; Canvas.LineTo (i, Sin (i));
# xA0; sfârșitul;

Ps. Sper că creierul meu funcționează corect

TCanvas (din nou maestrii vor veni la mine) să fie în practic orice component vizual. dar este mai bine să utilizați PaintBox


> TCanvas (din nou maestrii vor veni la mine) să fie în practică






> orice componentă vizuală. dar este mai bine să utilizați PaintBox

TCanvas este esența HDC. Există într-adevăr multe componente vizuale (dar nu toate). Nu toată lumea o are în public.

Greșit, va exista o linie dreaptă


> Greșit, va exista o linie dreaptă

oh bine da
Canvas.LineTo (i, rotundă (Sin (i) * 100));

Și dacă totuși te întorci la TChart?

Argumentul trebuie să fie în radiani

Aruncați graficul pe formular, faceți dublu clic pe partea dreaptă. Făcând clic pe butonul, adăugați tipul de grafic și experimentul
un exemplu de sinusoidă când apare o fereastră:

procedura TForm1.FormActivate (expeditor: TObject);
var
k: Integer;
începe
pentru k: = 0 până la 20 nu
[0] .AddXY (k, sin (k * pi / 10), "", clRed);
se încheie;

standardul.

Iată codul din DRKB. Elaborează un grafic de funcții.


procedura TForm1.Button3Click (expeditor: TObject);
var x, y: matrice [1..50] de dublu;
# xA0; i: întreg;
# xA0; scalex, scaley, ymin, ymax, xmin, xmax: duble;
începe
# xA0; pentru i: = 1 până la 50 nu
# xA0; # xA0; începeți
# xA0; # xA0; # xA0; y [i]: = sin (i * 0,5);
# xA0; # xA0; # xA0; x [i]: = i;
# xA0; # xA0; sfârșitul;
# xA0; xmin: = x [1];
# xA0; xmax: = x [1];
# xA0; ymin: = y [1];
# xA0; ymax: = y [1];
# xA0; pentru i: = 2 până la 50 nu
# xA0; # xA0; începeți // sau utilizați ymin: = MinValue (y); și așa mai departe.
# xA0; # xA0; # xA0; dacă y [i] # xA0; # xA0; # xA0; dacă y [i]> ymax atunci ymax: = y [i];
# xA0; # xA0; # xA0; dacă x [i] # xA0; # xA0; # xA0; dacă x [i]> xmax atunci xmax: = x [i];
# xA0; # xA0; sfârșitul;
# xA0; scalex: = varianta de vopsea1.Lățime / (xmax - xmin);
# xA0; scaley: = vopsea1.Valoare / (ymax - ymin);
# xA0; cu paintbox1.canvas face
# xA0; # xA0; începeți
# xA0; # xA0; # xA0; moveto (trunc (scalar * (x [1] - xmin)), varianta vopsea1.height - trunc (scaley * (y [1] - ymin)));
# xA0; # xA0; # xA0; pentru i: = 2 până la 50 nu
# xA0; # xA0; # xA0; # xA0; Lineto (trunc (scalar * (x [i] - xmin)), varianta vopsea1.height - trunc (scara * (y [i] - ymin)));
# xA0; # xA0; sfârșitul;
se încheie;

MoveTo / LineTo înlocui mai bine Windows.PolyPolyLine

Memorie: 0,75 MB
Durată: 0,046 secunde







Articole similare

Trimiteți-le prietenilor: