Kezdőoldal » Számítástechnika » Programozás » Grafikon készítése?

Grafikon készítése?

Figyelt kérdés

Sziasztok



Erősen kezdőnek számítok a programozás világában, így biztos sokan a hajukat fogják tépni, hogy ilyen "egyértelmű" dolgot kérdezek. :) De hiába keresgéltem, sehogy sem bírtam megtalálni a választ.


Szóval egy grafikont szeretnék készíteni, ami csupán annyit tud, hogy piros (szaggatott) vonalat rajzol, ha az érték 0 alá csökken (ami ez esetben nagyobb, mint 250) és zöld el, ha 0 fölé (ami ugye kisebb, mint 250). A probléma az, hogy én azt szeretném, hogy a vonal onnantól váljon pirossá vagy zöldé, ahol metszi az x tengelyt.

Azt eddig megoldottam, hogy ha nagyobb vagy kisebb, más színt kap, viszont ha +100-ban vagyok, és lecsökken az érték -25re, akkor a +100tól egészen a -25-ig piros lesz a vonal.


Íme a program:


procedure TForm1.Button1Click(Sender: TObject);

var a,b,c,d,x,y,p,k:integer;

begin

with image1.canvas do

begin

c:= strtoint(edit3.text);

d:= strtoint(edit4.text);

a:= strtoint(edit1.text);

b:= strtoint(edit2.text);

x:= strtoint (edit5.text);

y:=strtoint (edit6.text);

p:= x*50+c;

k:= d+y*(-1);

begin

pen.color:=clred;

if k<250 then

pen.color:=clgreen;

begin

pen.width:=2;

pen.style:=psDash;

line(c,d,p,k);

ellipse(a-4,b-4,a+4,b+4);

ellipse(c-4,d-4,c+4,d+4);


edit3.text:= inttostr(p);

edit4.text:= inttostr(k);

end;

end;

end;


end;



(Azért némi magyarázatot fűznék ahhoz, hogy hogyan is működik.

Szóval, az első edit oszlopban csak a kezdő adatok vannak, azt nem kell bolygatni [edit1;edit2]

a második oszlop első cellájába az eltelt napok számát kell írni, tehát, ha 2nap telt el, s eközben az érték +48-al nőtt, akkor felső:2 alsó:48 [edit5,edit6]

a harmadik oszlopot szintén nem kell bolygatni :) [edit3,edit4]


A Button1 arra szolgál, hogy a bevitt értéket megjelenítsük, a Button2 pedig a koordinátarendszert jeleníti meg.)



link a képhez:

[link]



2014. aug. 13. 17:19
 1/4 A kérdező kommentje:
Lehet lemaradt, de Lazarusban írom a programot.
2014. aug. 13. 17:20
 2/4 anonim ***** válasza:

Én így csinálnám szakaszonként:


Megvizsgálnám az aktuális szakasz két végpontját (A és B)

a) Mindkettő az X-tengely fölött van -> egy zöld vonal A-ból B-be

b) Mindkettő az X-tengely alatt van -> egy piros vonal A-ból B-be

c) Először meg kell határozni, hogy hol metszi az X-tengelyt (M pont). Utána két eset:

c) 1. Az A alatta, a B felette -> egy piros vonal A-ból M-be, és egy zöld vonal M-ből B-be

c) 2. Az A fölötte van, a B alatta -> egy zöld vonal A-ból M-be, és egy piros vonal M-ből B-be


M meghatározásához nézz utána a koordináta geometriában az egyenes egyenletének szerintem. M egyik koordinátáját tudjuk, y=0 (az X-tengelyen van!). A másikat pedig az egyenes egyenletével (A és B egyetlen egyenest határoznak meg) kiszámolhatjuk könnyen.


Bocsi, de csak ilyen elméleti segítséget tudok most nyújtani, mert fáradt vagyok most ahhoz, hogy egy számomra ismeretlen programozási nyelven írott kódot értelmezzek.

Remélem azért, segít megoldani.

2014. aug. 15. 14:16
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:

Nagyon köszönöm, nagyon sokat segítettél. :)


Annyira bele voltam gabalyodva a bonyolult megoldásokba, hogy ez eszembe se jutott, pedig teljesen egyértelmű.


Még egyszer kösz!

2014. aug. 15. 16:39
 4/4 SimkoL ***** válasza:
Javasolnám a TPoint típust. Sokat szépítene és ha 'értelmes' nevet adsz akkor átláthatóbb is lenne a kód.
2014. aug. 15. 17:03
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!