Desenați un grafic al funcției în delphi - articolul

Desenați un grafic al funcției în Delphi

În acest articol ne vom uita la mai multe moduri de a desena graficul oricărei funcții. Desenați un grafic vom schița în componenta de imagine.

Bazându-se pe pixeli

Vopsea pe panza poate fi o varietate de moduri. Prima opțiune - pentru a picta pixeli. În acest scop, proprietatea pixelilor panza. Această proprietate este o matrice bidimensională, care este responsabil pentru culoarea panza. De exemplu Canvas.Pixels [10,20] - corespunde culoarea pixelului cu coordonatele (10,20). Cu o matrice de pixeli pot fi tratate ca orice proprietate care schimba culoarea specificând o nouă valoare în pixeli, sau pentru a determina culoarea, cu valoarea stocată în acesta. In exemplul de mai jos definim pixel negru cu coordonatele (10,20):

Acum vom încerca să atragă un grafic al funcției F (x), dacă știm gama de modificările Ymax și Ymin, iar intervalul schimbă argumentul Xmax și xmin. Pentru a face acest lucru, vom scrie o funcție particularizată care va calcula valoarea F la punctul x, în timp ce, de asemenea, va reveni maxim și minim al funcției și argumentul său.

Nu uitați să specificați titlul acestei opțiuni în public:

Aici, din motive de claritate, vom specifica pur și simplu o serie de opțiuni pentru schimbarea sin (x) și argumentele sale de mai jos, această funcție va fi descrisă în întregime. Parametrii Xmax, xmin, Ymax, Ymin - Var descris cu cuvântul, deoarece acestea sunt de intrare-ieșire, și anume prin intermediul lor, funcția va reveni la calcularea valorii acestor date la programul principal. Prin urmare, este necesar să se declare Xmax, xmin, Ymax, Ymin ca variabile globale în secțiunea de punere în aplicare:

Acum am pus forma buton și în handler eveniment de OnClick scrie următorul cod:

Acest cod trebuie introdus variabilele x și y, care sunt valorile argumentului și funcția, precum și variabilele PX și PY, sunt coordonatele pixelilor corespunzând x și y. Procedura în sine include un ciclu pentru toate valorile coordonatelor orizontale ale pixelilor PX componenta Image1. În primul rând, valoarea PX selectată este recalculată la valoarea x corespunzătoare. Apoi, funcția apel F (x) este determinat și Y. valoarea sa Această valoare este convertită în verticală coordonată a PY pixel.

Desen cu pix stilou

În panza există o proprietate de Pen - un stilou. Acest obiect, la rândul său, are un număr de proprietăți. Unul dintre ei - proprietate Color - culoarea care se aplică imaginii. A doua proprietate - Lățime - lățimea liniei este setată în pixel (cel implicit).

proprietate stil determină tipul de linie și poate lua următoarele valori:

Linia solidă, dar Lățime> 1 poate fi colorat, paleta non Windows

Toate stilurile cu accidente vasculare cerebrale și linii punctate sunt disponibile numai în cazul în care grosimea liniilor egal cu 1. În caz contrar, liniile sunt desenate sub forma unui solid.

In panza se PenPos tip de proprietate TPoint. Această proprietate determină coordonatele Pânză în poziția curentă a pen-ului. Mutarea stilou fără vectorizare este realizată prin MoveTo (x, y). După apelarea acestei metode, un punct de contur coordonatele (x, y) devine o sursă pentru a trasa o linie în orice punct cu coordonatele (x, y) prin LineTo (x, y).

Să încercăm acum să atragă un grafic al stiloului sine. Pentru a face acest lucru, se adaugă înainte de operatorul ciclu:

Image1.Canvas.MoveTo (0, Image1.height div 2);

Și adaugă următoarea declarație înainte de a ciclului final finală:

Deci, ar trebui să obțineți următorul cod:

Procedura TForm1.Button1Click (Expeditor: TObject);
var x, y: real;
PX, PY: longInt;
începe
Image1.Canvas.MoveTo (0, Image1.height div 2);
pentru PX: = 0 până la Image1.Width face
începe
x: = xmin + PX * (Xmax-xmin) /Image1.Width;
y: = F (x, Xmax, xmin, Ymax, Ymin);
PY: = trunc (Image1.Height- (y-Ymin) * Image1.height / (Ymax-Ymin));
image1.Canvas.Pixels [PX, PY]: = clBlack;
Image1.Canvas.LineTo (PX, PY);
se încheie;
se încheie;

După cum ați observat deja, dacă rulați programul, calitatea graficii desen stilou, mult mai bine decât bazându-se pe pixeli.

Ca promised'll a scrie un program de probă care găsește maxim și minim al unei funcții. Sunt un pic schimbat structura procedurilor și funcțiilor, în scopul de a face mai clar. Aici este gata pentru a programa codul:


Procedura TForm1.Button1Click (Expeditor: TObject);
var x, y: real;
PX, PY: longInt;
începe
// aici trebuie să specificați intervalul de variație x
Xmax: = 8 * pi;
Xmin: = 0;

// calculează extremele funcției
Extrem1 (Xmax, xmin, Ymin);
Extrem2 (Xmax, xmin, Ymax);

Ei bine, asta e tot, graficul de construire a programului este gata.

articole similare