You are on page 1of 7

Klasa Graphics

Od velikog broja aplikacija zahtjeva se da pored teksta i brojeva imaju i odgovarajući grafički
prikaz. Klasa koja omogućava crtanje po bilo kojoj sistemskoj kontroli je klasa Graphics.
Objekat ove klase predstavlja površinu po kojoj se crta. Znači prvi korak je kreiranje ovog
objekat a zatim njegovo korištenje u skladu sa slikom koju želimo da nacrtamo. Objekat klase
Graphics za neku kontrolu se kreira pozivom metode CreateGraphics() tako da je sada
površina za crtanje ta kontrola. Klasa Graphics omogućava crtanje različitih oblika kao što
su:linija, pravougaonik, popunjeni pravougaoni, elipsa, popunjena elipsa, kružni luk, kriva
linija na osnovu 4 tačke, itd. Metode koje se najčešće koriste za ovakva crtanja su:

DrawLine – crtanje prave linije,

DrawRectangle –crtanje pravougaonika,

FillRectangle – crtanje popunjenog pravougaonika,

DrawEllipse – crtanje elipse,

FillEllipse – crtanje popunjene elipse,

DrawArc – crtanje kružnog luka,

DrawBezier – crtanje krive (Bezierove krive) na osnovu 4 tačke.

Prilikom korištenja metoda za crtanje neophodno je da kreiramo olovku (objekat klase Pen),
ako želimo da crtamo konture željenog oblika, ili četku (objekat klase SolidBrush) ako želimo
popunjen oblik. Objektom klase Pen definišemo boju, širinu i stil linija kojih crtamo. Svojstvo
Color objekta klase Pen predstavlja boju, dok svojstvo Width predstavlja širinu linije. Kreiranje
objekta olovka klase Pen čija je boja crvena, a širina 5, vrši se na sledeći način:

Pen olovka = new Pen (Color.Red, 5);

Prostor za cranje briše se korištenjem metoda Clear klase Graphics. Taj metod ima jedan
parameter – boju pozadinske kontrole. Pozivom metode Clear briše se prostor za crtanje i
popunjava bojom koja je predate kao parameter ovom metodu. Npr, ako pozovemo metod na
sledeći način:

g.Clear (Color.White)

kontrola za koju je definisana grafika g će biti popunjena bijelom bojom.

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 lijevom
uglu, pozitivni dio x ose ide od lijeve strane ka desnoj a pozitivni dio y ose od vrha ka dnu .
U slučaju događaja kada je korisnik pritisnuo, odnosno otpustio taster miša, sistem registruje
koordinate pokazivača miša u trenutku događaja i te koordinate su (e.X, e.Y). Prilikom pisanja
programa početnu tačku (Point) duži možemo obilježiti sa A, a krajnju sa B.

Linija

private void Form1_Paint(object sender, PaintEventArgs e)


{
int x1 = 20, x2 = 200, y1 = 20, y2 = 100;
Pen Linija = new Pen(Color.Black);
e.Graphics.DrawLine(Linija,x1, y1, x2, y2);
}
Pravougaonik
private void Form1_Paint(object sender, PaintEventArgs e)
{
int x1 = 20, x2 = 200, y1 = 20, y2 = 100;
Pen Linija = new Pen(Color.Black);
e.Graphics. DrawRectangle(Linija,x1, y1, x2, y2);
}

e.Graphics. DrawRectangle(Linija,x1, y1, x1+Width, y1+Height);

Ispunjene figure

SolidBrush Popuniti = new SolidBrush(Color.Red);


e.Graphics.FillEllipse(Popuniti,x1, y1, x2, y2);

U zavisnosti od događaja, razlikuju se parametri koji ga opisuju. Tako je za događaj


MouseClick definisan položaj strelice miša u trenutku dešavanja (e.X, e.Y), dok je za događaj
Paint važno svojstvo Graphics parametra e (e.Graphics).

Neki od doga]aja koji su zajednički za sve kontrole.

• Click – dešava se kada kliknete na kontrolu.


• MouseClick – dešava se kada se klikne na kontrolu; u ovom događaju položaj strelice
miša u trenutku dešavanja definisan je parametrom e (e.X, e.Y), dok to nije slučaj kod
događaja Click.
• MoseDown – Reakcija na pritisak tastera miša; ovaj događaj za razliku od događaja
MouseClick, dešava se čim korisnik pritisne taster miša.
• MouseUp – Dešava se kada se otpusti taster miša.
• MouseMove – Dešava se dok se mišem prelazi preko kontrole.
• Paint – Dešava se kada se kontrola iscrtava.
• TextChange – Dešava se kada se mijenja svojstvo Text kontrole.
• Resize – Dešava se kada se mijenja veličina kontrole.

Komponenta Timer se pokreće sa metodom Start (), a zaustavlja sa metodom Stop (). Vrijednost
svojstva Interval definiše vremenski interval izražen u milisekundama (ms). Svaki otkucaj
kontrole Timer je definisan sa Tick-om.

Klasu Random koristimo za generisanje slučajnih brojeva. Prvo se kreira objakat te klase
pozivom:

Random R = new Random();

Metod kojim generišemo slučajne cijele brojeve je Next. Prikazujemo njegove tri varijante:

1. Next () – vraća nenegativan slučajan cio broj,


2. Next (maxVrijednost) - vraća nenegativan slučajan cio broj manji od maxVrijednost,
3. Next (minVrijednost, maxVrijednost) - vraća nenegativan slučajan cio broj, veći ili
jednak minVrijednost i manji od maxVrijednost.

Struktura Color sadrži metod kojim se može definisati proizvoljna boja:

FromArgb (nivoCrvene, nivoZelene, nivoPlave).

Vrijednosti nivoCrvene, nivoZelene, nivoPlave su cijeli brojevi od 0 do 255. Slučajnu boju


možemo definisati slučajnim izborom ovih vrijednosti.

Zadatak 1:

Kreirati aplikaciju kojom se u objektu klase PictureBox prikazuju operatori poređenja. Prikaz
operatora korisnik inicira klikom na odgovarajuće dugme.
private void ManjeIJednako_Click(object sender, EventArgs e)
{
pictureBox1.Refresh();
Graphics g = pictureBox1.CreateGraphics();
Pen olovka = new Pen(Color.Green,4);
g.DrawLine(olovka, pictureBox1.ClientRectangle.Width, 0, 0,
pictureBox1.ClientRectangle.Height / 2);
g.DrawLine(olovka, 0, pictureBox1.ClientRectangle.Height / 2,
pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height-5);
g.DrawLine(olovka, 0,
pictureBox1.ClientRectangle.Height,pictureBox1.ClientRectangle.Width ,
pictureBox1.ClientRectangle.Height);
}

Zadatak2:
Kreirati aplikaciju kojom se crtaju pahuljice. Centar pahuljice je tačka na koju je korisnik kliknuo.Veličina
pahuljice je fiksna i iznosi 60 piksela po visini i 60 po širini(duži krak). Kraći krak je duplo manji

Zadatak3:

Kreirati aplikaciju sa stavkama glavnog menija: Oblik (čije su podstavke: Pravougaonik, Linija,
Elipsa i Izlaz) i Boja (sa podstavkom: Izbor boje, čijim se aktiviranjem otvara ColorDialog za
izbor boje).

Klikom na dugme u PictureBox-u se iscrtava izabrani oblik maksimalne veličine željene boje
(ako korisnik nije izabrao nijednu od ponuđenih stavki, podrazumjevano se iscrtava krug crne
boje).
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Meni & PictureBox


{
public partial class Form1 : Form
{
Color boja = Color.Black;
Int32 izbor = 0;
public Form1()
{
InitializeComponent();
}

private void izborBojeToolStripMenuItem_Click(object sender,


EventArgs e)
{
colorDialog1.ShowDialog();
boja = colorDialog1.Color;
}

private void pravougaonikToolStripMenuItem_Click(object sender,


EventArgs e)
{
izbor = 1;
}
private void linijaToolStripMenuItem_Click(object sender, EventArgs e)
{
izbor = 2;
}

private void elipsaToolStripMenuItem_Click(object sender, EventArgs e)


{
izbor = 3;
}

private void izlazToolStripMenuItem_Click(object sender, EventArgs e)


{
Close();
}

private void button1_Click(object sender, EventArgs e)


{
Graphics g = pictureBox1.CreateGraphics();
g.Clear(Form1.DefaultBackColor);
Pen olovka = new Pen(boja, 2);
switch (izbor)
{
case 0: {
Int32 manje = pictureBox1.ClientRectangle.Width;
if (pictureBox1.ClientRectangle.Height < manje) manje =
pictureBox1.ClientRectangle.Height;
g.DrawEllipse(olovka, 0, 0, manje, manje);
break;
}
case 1: { g.DrawRectangle(olovka, 0, 0,
pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height);
break; }
case 2: { g.DrawLine(olovka, 0, 0,
pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height);
break; }
case 3: { g.DrawEllipse(olovka, 0, 0,
pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height);
break; }
}
olovka.Dispose();
g.Dispose();
}

private void richTextBox1_TextChanged(object sender, EventArgs e)


{

}
}

You might also like