Professional Documents
Culture Documents
Klasa Graphics
Klasa Graphics
Svaka površina po kojoj se crta ima koordinatni sistem koji malo odstupa od klasičnog
Dekartovog koordinatnog sistema. Naime, u ovom koordinatnom sistemu se koordinatni
početak (x koordinata jednaka nuli i y koordinata jednaka nuli) nalazi u gornjem levom uglu,
pozitivni deo x ose ide od leve strane ka desnoj a pozitivni deo y ose od vrha ka dnu
(pogledaj sliku 2).
Pošto ćemo crtati po formi Grafika potrebno je da napišemo sledeći kod koji će da se
veže za događaj Paint (događaj Paint je zadužen za samo iscrtavanje i on ima standardne
argumente)
private void Grafika_Paint(object sender, PaintEventArgs e)
{
Graphics graf = e.Graphics;
Pen olovka = new Pen(Color.Blue, 15);
int sirina = ClientRectangle.Width;
int visina = ClientRectangle.Height;
Point pocetakLinije, krajLinije;
pocetakLinije = new Point(sirina / 4, visina / 4);
krajLinije = new Point(3 * sirina / 4, 3 * visina / 4);
graf.DrawLine(olovka, pocetakLinije, krajLinije);
olovka.Dispose();
}
Kao rezultat izvršenja programa (izbor stavke Linija u meniju Grafika u glavnoj formi)
dobija se plava linija kao što je to prikazano na slici 4.
Analizirajmo kod koji se izvršava za događaj Paint. Najpre je kreiran objekat klase
Graphics. Zatim je kreiran objekat klase Pen koja definiše kako će izgledati linija kojom se
crta tj. oblik linije, debljina linije, boja, itd. Olovku smo podesili na plavu boju i debljinu linije od
15 pointa tako što su Color.Blue i 15 korišćeni kao argumenti konstruktora klase Pen. Linija
koja se iscrtava primenom metode DrawLine spaja dve prethodno definisane tačke:
pocetakLinije i krajLinije koje predstavljaju objekte klase Point. Ova klasa ima konstruktor čiji
su argumenti celobrojne koordinatne X i Y izražene kao broj pixela. Ako pokrenemo aplikaciju
prikazaće se plava linija kao na slici 4.
Slika 4: Linija
Ako promenimo veličinu prozora tj. forme Grafika (klik miša na donji desni ugao forme
u oblasti 6 sivih tačkica u obliku trougla i pomeranje miša) onda se i linija menja u skladu sa
promenom veličine forme. Primetićete da su za određivanje krajnjih tačaka linije korišćene
dve pomoćne promenljive sirina i visina koje su postavljene na širinu odnosno visinu oblasti
forme na po kojoj može da se crta, a predstavljena je osobinom ClientRectangle koja ima
osobine Width i Height. Tačke smo odredili relativno u odnosu na ClientRectangle tj. kao
jedna odnosno tri četvrtine širine odnosno visine. Na ovaj način će se svaki put kada
promenimo veličinu forme Grafika promeniti i apsolutni položaji tačaka koji će relativno u
odnosu na veličinu forme biti na istom mestu.
Na kraju se pozivom metode Dispose() oslobađaju resursi zauzeti pri kreiranju objekta
olovka klase Pen.