Rajzolj egy függvény grafikonját a Delphi - Cikk
Ebben a cikkben nézzük meg több módon felhívni a grafikon minden funkciót. Rajzolj egy gráf Cikkünkben bemutatjuk az Image komponenst.
rajz Pixel
Festék, vászon lehet a legkülönfélébb módokon. Az első lehetőség - festeni a pixel. Erre a célra az ingatlan a vászon pixel. Ez a tulajdonság egy kétdimenziós tömb, amely felelős a színe a vásznon. Például Canvas.Pixels [10,20] - megfelel a színét a pixel koordinátái (10,20). Egy sor pixel lehet kezelni, mint bármely vagyon hogy a színe megváltozik megadásával egy új értéket, vagy hogy meghatározza a színét, a tárolt értéket biztosít. Az alábbi példában definiálunk fekete pixelt a koordináták (10,20):
Most megpróbáljuk felhívni a grafikon az F (x), ha tudjuk, hogy az általa ellátott változások Ymax és Ymin. és a szórási tartományt az Xmax és Xmin érv. Ehhez fogunk készíteni egy egyedi funkció, amely az A értékét F ponton x, ugyanakkor visszatér a maximális és minimális a funkció és az érvelését.
függvény Tform1.F (x: valós; var xmax, Xmin, Ymax, Ymin: valós): valós;
kezdődik
F: = sin (x);
Xmax: = 4 * pi;
Xmin: = 0;
Ymax: = 1;
Ymin: = - 1;
Vége;
Ne felejtsük el, hogy adja meg a címet ennek a lehetőségnek a Public:
nyilvános
F (x: valós; var xmax, Xmin, Ymax, Ymin: valós): valós;
Itt, az egyértelműség kedvéért, egyszerűen meg egy sor lehetőséget változó a sin (x) és annak érvek alatti, ez a funkció ismertetjük teljes egészében. Paraméterek Xmax, Xmin, Ymax, Ymin - Var le a szót, mert az input-output, azaz a rajtuk keresztül, a függvény visszatérési értéke kiszámításánál ezeket az adatokat a fő program. Ezért szükséges, hogy állapítsa meg a Xmax, Xmin, Ymax, Ymin mint globális változók a végrehajtási szakaszban.
Most tegye a gomb alakját és annak onclick eseménykezelő írni a következő kódot:
eljárás TForm1.Button1Click (Sender: TObject);
var x, y: a valós;
PX, PY: longInt;
kezdődik
Px: = 0 Image1.Width do
kezdődik
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;
végén;
végén;
Ezt a kódot kell beírni x és y változót, melyek értéke az érvelés és a funkció, valamint a változók PX és PY, amelyek koordinátái megfelelő képpontok x és y. Az eljárás maga is tartalmaz egy ciklus minden értékére vízszintes koordinátái pixel PX Image1 komponenst. Először is, a kiválasztott érték PX újraszámolódik a megfelelő érték x. Ezután a hívás funkció F (x) határozza meg és annak értéke Y. Ezt az értéket átalakítjuk a függőleges pixel koordinátája PY
Rajz Pen toll
A vászon van egy tulajdonsága Pen - egy tollat. Ez az objektum, viszont amelynek számos tulajdonságait. Egy tulajdonság Szín - a szín, amely a kép. Második szélesség tulajdon - vonalvastagság adják pixel (alapérték 1).
Style tulajdonság határozza meg a vonal típusát, és a következő értékeket:
A folytonos vonal, de szélesség> 1 lehet színes, nem Windows-paletta
Minden stílusok stroke és a szaggatott vonal érhető el, ha a vonalak vastagsága egyenlő 1. Ellenkező esetben a vonalakat húzunk szilárd.
A vászon ott PenPos ingatlan típusa TPoint. Ez a tulajdonság határozza meg a koordinátákat a vásznon a jelenlegi helyzetben a tollat. Mozgó a toll nélkül vektorizáció végezzük MoveTo (x, y). Ezután hívja ezt a módszert, egy vázlatot pont koordinátái (x, y) válik egy forrást, ahonnan felhívni egy vonalat bármely ponton koordinátái (x, y) a LineTo (x, y).
Térjünk most megpróbálják felhívni a grafikon a szinusz tollat. Ehhez hozzá a ciklus előtti üzemeltetője:
Image1.Canvas.MoveTo (0, Image1.height div 2);
És adjuk hozzá a következő nyilatkozatot, mielőtt a végső ciklus vége:
Tehát meg kell szereznie a következő kódot:
eljárás TForm1.Button1Click (Sender: TObject);
var x, y: a valós;
PX, PY: longInt;
kezdődik
Image1.Canvas.MoveTo (0, Image1.height div 2);
Px: = 0 Image1.Width do
kezdődik
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);
végén;
végén;
Mint azt már észre, ha fut a program, a minőségi grafika rajz toll, sokkal jobb, mint támaszkodva pixel.
Mint promised'll levelet mintaprogram megtalálja a maximális és minimális a funkciót. Én egy kicsit szerkezete megváltozott eljárások és függvények annak érdekében, hogy egyértelműbb legyen. Itt van kész a program a kódot:
.
típus
TForm1 = osztály (TForm)
Button1: TButton;
Image1: TImage;
eljárás Button1Click (Sender: TObject);
magán
nyilvános
F (x: valós): valós;
Eljárás Extrem1 (Xmax, Xmin: real; Var Ymin: real);
Eljárás Extrem2 (Xmax, Xmin: real; Var Ymax: real);
végén;
végrehajtás
Const e = 1e-4; // pontosságát egy ezred
var Xmax, Xmin, Ymax, Ymin: real;
működnek Tform1.F (x: valós): valós;
kezdődik
F: = sin (x);
Vége;
// találni minimum funkció
Eljárás TForm1.Extrem1 (Xmax, Xmin: real; Var Ymin: real);
Var x, h: a valós; J, N: integer;
kezdődik
N: = 10;
ismétlés
X: = Xmin;
n: = n * 2;
h: = (Xmax-Xmin) / n;
Ymin: = F (Xmin);
A j: = 1-től n-do kezdeni
ha f (x)
végén;
Amíg abs (f (Ymin) -f (Ymin + H))
// A maximálisan funkció
Eljárás TForm1.Extrem2 (Xmax, Xmin: real; Var Ymax: real);
Var x, h: a valós; J, N: integer;
kezdődik
N: = 10;
ismétlés
X: = Xmin;
n: = n * 2;
h: = (Xmax-Xmin) / n;
Ymax: = F (Xmin);
A j: = 1-től n-do kezdeni
ha f (x)> = Ymax majd Ymax: = f (x);
X: = x + H;
végén;
Amíg abs (f (Ymax) -f (Ymax + H))
eljárás TForm1.Button1Click (Sender: TObject);
var x, y: a valós;
PX, PY: longInt;
kezdődik
// itt meg kell adni a szórási tartományt x
Xmax: = 8 * pi;
Xmin: = 0;
// számolja szélsőértékében a függvény
Extrem1 (Xmax, Xmin, Ymin);
Extrem2 (Xmax, Xmin, Ymax);
// felhívni a függvény grafikonját
Image1.Canvas.MoveTo (0, Image1.height div 2);
Px: = 0 Image1.Width do
kezdődik
X: = Xmin + PX * (Xmax-Xmin) /Image1.Width;
y: = f (x);
PY: = TRUNC (Image1.Height- (y-Ymin) * Image1.height / (Ymax-Ymin));
image1.Canvas.Pixels [PX, PY]: = clBlack;
Image1.Canvas.LineTo (PX, PY);
végén;
végén;
végén.