1 / 16

Grafika vo Visual C++

Grafika vo Visual C++. Namespace System::Drawing. Namespace System::Drawing obsahuje funkcie na prácu s jednoduchou grafikou. Kompletn ý popis: http://msdn2.microsoft.com/en-us/library/system.drawing(VS.71).aspx System::Drawing umožňuje napríklad:

ivi
Download Presentation

Grafika vo Visual C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grafika vo Visual C++

  2. Namespace System::Drawing • Namespace System::Drawing obsahuje funkcie na prácu s jednoduchou grafikou. • Kompletný popis: http://msdn2.microsoft.com/en-us/library/system.drawing(VS.71).aspx • 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. Štruktúra obsahuje údaje X a Y, v ktorých sú uložené súradnice bodu. 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. Obsahuje dva údaje Height a Width. 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 button2 Button button1

  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); }

More Related