Presentation is loading. Please wait.

Presentation is loading. Please wait.

Grafika vo Visual C++.

Similar presentations


Presentation on theme: "Grafika vo Visual C++."— Presentation transcript:

1 Grafika vo Visual C++

2 Namespace System::Drawing
Namespace System::Drawing obsahuje funkcie na prácu s jednoduchou grafikou. Kompletný popis: System::Drawing umožňuje napríklad: Vykresliť základné geometrické tvary – čiaru, kružnicu, n-uholník, krivku... Zobraziť obrázok a pracovať s ním Zobraziť texty Pracovať s perami a štetcami, ktoré určujú farbu a typ kreslenia a výplne Pracovať s preddefinovanými štruktúrami, napr. bod a obdĺžnik

3 Štruktúry v System::Drawing
1 . Point Táto štruktúra predstavuje dvojrozmerný bod s celočíselnými súradnicami. Štruktúra obsahuje údaje X a Y, v ktorých sú uložené súradnice bodu. 2. PointF Táto štruktúra predstavuje dvojrozmerný bod s reálnymi súradnicami. 3. Rectangle Táto štruktúra reprezentuje obdĺžnik s celočíselnými súradnicami vrcholov. Je daná štyrmi údajmi: X, Y – súradnice ľavého horného rohu Width – šírka obĺžnika Height – výška obdĺžnika 4. RectangleF Táto štruktúra reprezentuje obdĺžnik s reálnymi súradnicami vrcholov. Má rovnaké údaje ako Rectangle.

4 Štruktúry v System::Drawing
5. Size Je to štruktúra, ktorá uchováva dvojicu celočíselných údajov (rozmerov), môže sa jednať napr. o rozmery obdĺžnika. Obsahuje dva údaje Height a Width. 6. SizeF Je to štruktúra, ktorá uchováva dvojicu reálnych údajov. 7. Color V tejto štruktúre je uložená farba vo formáte aplha-red-green-blue. Množstvo farieb je už preddefinovaných a farbu s konkrétnymi hodnotami dostaneme pomocou metódy: Color FromArgb(int red, int green, int blue) resp. Color FromArgb(int alpha, int red, int green, int blue)

5 Triedy v System::Drawing
1. Graphics Táto trieda reprezentuje plochu, na ktorú kreslíme. Kresliaca plocha väčšinou patrí k nejakému komponentu (hlavné okno, PictureBox...). Plochu vytvoríme pomocou funkcie: Graphics^ CreateGraphics() Táto funkcia je metódou príslušného komponentu. Ak chceme napr. kresliť do PictureBoxu, ktorý sa volá pictureBox1, urobíme to takto: Graphics ^grafika=pictureBox1->CreateGraphics(); 2. Pen Táto trieda predstavuje pero, ktorým kreslíme čiary. V konštruktore triedy je ako parameter farba pera (štruktúra Color). Nové pero môžeme vytvoriť takto: Pen ^Pero=gcnew Pen(farba); 3. SolidBrush SolidBrush je jednofarebný štetec, ktorý sa používa na vypĺňanie objektov. V konštruktore je ako parameter jeho farba (štruktúra Color). Vytvorenie štetca teda vyzerá takto: SolidBrush ^Stetec=gcnew SolidBrush(farba);

6 Triedy v System::Drawing
4. Bitmap Trieda Bitmap uchováva obrázok vo forme množiny pixelov. Táto trieda má 12 rôznych konštruktorov, napr. Bitmap(String cesta) – načíta obrázok zo súboru Bitmap(int sirka, int vyska) – vytvorí nový obrázok s danými rozmermi 5. TextureBrush TextureBrush predstavuje štetec, ktorý vypĺňa objekt nejakou vzorkou. Vzorka je zadaná v konštruktore ako obrázok (objekt typu Bitmap, resp. rodičovskej triedy Image). Nový štetec vytvoríme napr. takto: TextureBrush ^Stetec=gcnew TextureBrush(obrazok); 6. Font V tejto triede sú uložené údaje o písme, ktoré sa použije pri vykreslení textu. Objekt triedy Font má rôzne konštruktory, napr.: Font(String *meno, float velkost, FontStyle styl)

7 Metódy triedy Graphics
trieda Graphics, ktorá predstavuje kresliacu plochu, má rôzne metódy na vykresľovanie geometrických útvarov, obrázkov a textu. 1. Čiara Čiara sa dá vykresliť zadaním pera, ktoré ju bude kresliť, a súradníc začiatočného a koncového bodu. void DrawLine(Pen *pero, int x1, int y1, int x2, int y2) void DrawLine(Pen *pero, Point bod1, Point bod2) 2. Obdĺžnik Obdĺžnik sa vykreslí zadaním pera a štruktúry Rectangle alebo priamo súradníc ľavého horného rohu, šírky a výšky. void DrawRectangle(Pen *pero, Rectangle obdlznik) void DrawRectangle(Pen *pero, int x, int y, int sirka, int vyska)

8 Metódy triedy Graphics
3. n-uholník Pre n-uholník treba zadať pero a pole vrcholov (štruktúr Point). void DrawPolygon(Pen *pero, Point[] body) 4. Elipsa Pri elipse sa zadáva pero a obdĺžnik, do ktorého je elipsa vpísaná void DrawEllipse(Pen *pero, Rectangle obdlznik) void DrawEllipse(Pen *pero, int x, int y, int sirka, int vyska) 5. Vyplnený obdĺžnik, n-uholník a elipsa V týchto prípadoch sa namiesto pera zadáva Štetec (SolidBrush alebo TextureBrush), ostatné parametre sú rovnaké ako pri nevyplnených objektoch. void FillRectangle(Brush *stetec, Rectangle obdlznik) void FillRectangle(Brush *stetec, int x, int y, int sirka, int vyska) void FillPolygon(Brush *stetec, Point[] body) void FillEllipse(Brush *stetec, Rectangle obdlznik) void FillEllipse(Brush *stetec, int x, int y, int sirka, int vyska)

9 Metódy triedy Graphics
6. Oblúk elipsy V tomto prípade treba zadať pero, obdĺžnik, do ktorého je elipsa vpísaná, začiatočný uhol  a uhol oblúka . void DrawArc(Pen *pero, Rectangle obdlznik, int alfa, int beta) void DrawArc(Pen *pero, int x, int y, int sirka, int vyska, int alfa, int beta) 7. Krivka Krivka je daná perom a poľom bodov, cez ktoré má prechádzať. Je možnosť nastaviť aj napätie krivky, ktoré ovplyvňuje jej výsledný tvar. void DrawCurve(Pen *pero, Point[] body) void DrawCurve(Pen *pero, Point[] body, float napatie)

10 Metódy triedy Graphics
8. Text Text je daný reťazcom, ktorý sa má vypísať, fontom, štetcom a svojou pozíciou (danou reálnymi súradnicami). void DrawString(String *retazec, Font *font, Brush *stetec, PointF pozicia) void DrawString(String *retazec, Font *font, Brush *stetec, float x, float y) 9. Obrázok Obrázok sa vykreslí tak, že sa zadá už vytvorený objekt triedy Image (resp. Bitmap) a pozícia, na ktorú sa obrázok umiestni (ľavý horný roh). void DrawImage(Image *obrazok, Point pozicia) void DrawImage(Image *obrazok, int x, int y) Ak chceme obrázok preškálovať, môžeme zadať aj jeho novú veľkosť: void DrawImage(Image *obrazok, int x, int y, int sirka, int vyska) Rovnaký výsledok docielime, ak dáme obrázok vykresliť priamo do konkrétneho obdĺžnika: void DrawImage(Image *obrazok, Rectangle obdlznik)

11 Metódy triedy Graphics
Príklad: Kreslenie do PictureBoxu Vytvorme aplikáciu, ktorá bude mať v hlavnom okne PictureBox a dve tlačítka s nápismi „kresli“ a „koniec“. Po stlačení tlačítka „kresli“ sa v PictureBoxe zobrazí takýto obrázok:

12 Metódy triedy Graphics
Okno našej aplikácie bude vyzerať takto: PictureBox pictureBox1 Button button1 Button button2

13 Metódy triedy Graphics
Po kliknutí na button1 sa zavolá nasledujúca funkcia: System::Void button1_Click(System::Object *sender, System::EventArgs *e) { Graphics ^grafika = pictureBox1->CreateGraphics(); Pen ^Pero1 = gcnew Pen(Color::Red); Pen ^Pero2 = gcnew Pen(Color::Blue); Pen ^Pero3 = gcnew Pen(Color::FromArgb(120,70,0)); SolidBrush ^Stetec1 = gcnew SolidBrush(Pero3->Color); Bitmap ^Vzorka =gcnew Bitmap("vzorka1.jpg"); TextureBrush ^Stetec2 = gcnew TextureBrush(Vzorka); System::Drawing::Font ^Pismo = gcnew System::Drawing::Font("Tahoma",15,FontStyle::Regular); grafika->DrawEllipse(Pero1,150,100,40,40); //hlava Point body[]=new Point[3]; body[0]=Point(170,140); body[1]=Point(150,160); body[2]=Point(190,160); grafika->DrawPolygon(Pero1,body); //krk

14 Metódy triedy Graphics
grafika->FillRectangle(Stetec2,150,160,40,60); //telo grafika->DrawLine(Pero1,150,160,135,200); //ľavá ruka grafika->DrawLine(Pero1,190,160,205,200); //pravá ruka grafika->DrawLine(Pero2,160,220,160,280); //ľavá noha grafika->DrawLine(Pero2,180,220,180,280); //pravá noha grafika->DrawRectangle(Pero2,160,115,1,1); //ľavé oko grafika->DrawRectangle(Pero2,180,115,1,1); //pravé oko grafika->DrawArc(Pero1,160,110,20,20,30,120); //ústa Point krivka[]=new Point[4]; krivka[0]=Point(170,105); krivka[1]=Point(177,90); krivka[2]=Point(170,85); krivka[3]=Point(165,90); grafika->DrawCurve(Pero3,krivka); //vlas grafika->DrawString("System::Drawing",Pismo,Stetec1,Point(95,250)); }

15 Metódy triedy Graphics
Príklad: Vykreslenie obrázku Predchádzajúci príklad zmeníme tak, že po stlačení tlačítka „kresli“ sa v PictureBoxe objaví obrázok face.jpg. Obrázok nezobrazíme v pôvodnej veľkosti 600x449, ale preškálujeme ho na nový rozmer 200x150.

16 Metódy triedy Graphics
Po stlačení tlačítka button1 sa zavolá táto funkcia: System::Void button1_Click(System::Object *sender, System::EventArgs *e) { Graphics ^grafika = pictureBox1->CreateGraphics(); Bitmap ^obrazok = gcnew Bitmap("face.jpg"); grafika->DrawImage(obrazok,150,100,200,150); }


Download ppt "Grafika vo Visual C++."

Similar presentations


Ads by Google