Uvod: Rad sa grafikom u C#

C# nudi bogat skup klasa za rad sa grafikom kroz System.Drawing i povezane biblioteke. Grafika u Windows Forms aplikacijama omogućava crtanje oblika, teksta i slika direktno na formama ili drugim kontrolama.

Glavne klase koje ćemo koristiti:

  • Graphics: Obavlja crtanje.
  • Pen: Definiše stil linije.
  • Brush: Popunjava unutrašnjost oblika.
  • Color: Definiše boju.

Klasa Graphics

Za crtanje u C# aplikacijama možemo da koristimo površinu neke sistemske kontrole. To postižemo korišćenjem metoda ugrađene klase Graphics. Objekat klase Graphics predstavlja površinu po kojoj crtamo. Prvo ga moramo kreirati, a zatim koristiti. Pozivanjem metode CreateGraphics() za neku kontrolu, kreira se objekat klase Graphics tako da je površina za crtanje upravo ta kontrola.

Klasa Graphics sadrži metode za crtanje raznih oblika, između ostalog:

  • DrawLine – za crtanje linija;
  • DrawEcllipse – za crtanje elipse;
  • DrawRectangle – za crtanje pravougaonika;
  • DrawArc – za crtanje proizvoljnog luka;
  • DrawBezier – za crtanje krive linije oko četiri tačke;
  • FillEllipse – za crtanje popunjene elipse;
  • FillRectangle – za crtanje popunjenog pravougaonika.
Prostor za crtanje brišemo korišćenjem metoda Clear klase Graphics.

npr: g.Clear(Color.White); // briše i popunjava kontrolu belom bojom

Pri kreiranju metoda za crtanje, neophodno je kreirati olovku (objekat klase Pen) ili četku (objekat klase SolidBrush).


Klasa Pen

Objektom klase Pen definišemo boju, širinu i stil linija i krivih koje crtamo.

Svojstva:

  • Color – struktura tipa Color;
  • Width – širina linije tipa float;
  • DashStyle – može biti Dash, DashDot, DashDotDot, Dot (u imenskom prostoru System.Drawing.Drawing2D);

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


Klasa SolidBrush

Pri crtanju popunjenih oblika (pravougaonik, elipsa) koristimo objekte klase SolidBrush.

Svojstva:

  • Color – struktura tipa Color;

Kreirani objekti klase Graphics, Pen i Brush zauzimaju odgovarajuće resurse našeg sistema pa je potrebno, po završetku crtanja, osloboditi resurse korišćenjem metode Dispose() klase Graphics.

Možemo koristiti događaj Paint za kontrolu, a on se pokreće po učitavanju kontrole, ali i svaki put kada se kontrola iscrtava (postaje ponovo vidljiva ili osveži prikaz). Možemo je pozvati i eksplicitno u bilo kom delu aplikacije, pozivom metode Refresh().

npr: DrawLine(Pen olovka,Point A, Point B); ili DrawLine(Pen olovka,intx1,int y1,int x2, int y2);


Klasa Color

Boja je određena strukturom Color. Ova struktura sadrži static atribute (nepromenljive tj. iste za sve podklase) kojima su predstavljene najčešće korišćene boje (Red, Green, Blue, Yellow, Black, White...) ali i metod kojim možemo da definišemo boju:

FromArgb( nivoCrvene, nivoZelene, nivoPlave)

Vrednosti nivoCrvene, nivoZelene i nivoPlave su celi brojevi od 0 do 255.


Klasa Random

Klasu Random koristimo za generisanje slučajnih brojeva. Prvo kreiramo objekat te klase pozivom konstruktora klase:

Random R = new Random();

Metod kojim generišemo slučajne brojeve je Next i on ima tri varijante:

  • Next() vraća nenegativan slučajan 32-bitni ceo broj;
  • Next(maxVrednost) vraća nenegativan slučajan 32-bitni ceo broj manji od maxVrednost;
  • Next(minVrednost, maxVrednost) vraća nenegativan slučajan 32-bitni ceo broj veći ili jednak minVrednost i manji od maxVrednost;


Zadatak:

Napraviti aplikaciju u kojoj treba da se klikom na formu prouzrokuje slučajna promena boje pozadine forme,  a u naslovnoj liniji treba da se ispiše informacija o koordinatama tačke na  koju je kliknuto.

private void Form1_Load(object sender, EventArgs e)
{
Text = "Klikni na formu";
Width = 500;
Height = 500;
}
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
Random R = new Random();
BackColor = Color.FromArgb(R.Next(256),R.Next(256),R.Next(256));
Text = "Kliknuli ste na polje ("+e.X+","+e.Y+")";
}



Za domaći zadatak:

Proučite kako je to objašnjeno na portalu Petlja.org:

 - Grafika u okruženju Visual Studio -

Last modified: Wednesday, 11 December 2024, 9:59 PM