Grafika vo Visual C++.

Slides:



Advertisements
Similar presentations
Computer Graphics Prof. Muhammad Saeed Dept. of Computer Science & IT Federal Urdu University of Arts, Sciences and Technology.
Advertisements

Računarska grafika GDI+ (Graphics Device Interface Plus)
User Interface Programming in C#: Graphics
Chapter 13 Graphics, Animation, Sound, and Drag-and-Drop Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved. McGraw-Hill.
Graphics and Multimedia. Outline Introduction Graphics Contexts and Graphics Objects Color Control.
Računarska grafika GDI+ (Graphics Device Interface Plus)
Graphics and Multimedia. Introduction The language contains many sophisticated drawing capabilities as part of namespace System.Drawing and the other.
Graphics Images – PictureBox control Drawing graphics - Graphics object Multimedia controls PictureBox control Image property – select image Choose how.
Computer Graphics Prof. Muhammad Saeed. Drawing and Transformation of Figures in C# August 1,
1 Chapter 26 D&D – Graphics Outline 26.1 Introduction 26.3 Graphics Contexts and Graphics Objects 26.4 Color Control 26.5 Font Control 26.6 Drawing Lines,
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Java Applets What is an Applet? How do you create.
Computer Programming and Basic Software Engineering 9 Building Graphical User Interface A Brief Introduction to GDI+ S.R.G. Fraser, Pro Visual C++/CLI.
Visual C++ Programming: Concepts and Projects Chapter 6A: Methods (Concepts)
CST238 Week 5 Questions / Concerns? Announcements – HW#1 due (Project ideas) – Check-off Take Home lab#4 Recap New topics – Drawing Coming up: – GUI Bloopers.
1 Windows Graphics. 2 Objectives You will be able to Use the Windows GDI+ to draw arbitrary figures and text on a Windows form. Add a handler for the.
Object Oriented Programming Graphics and Multimedia Dr. Mike Spann
C# Programming Lecture 4 “GDI+” PGL01/CSP/2006.
Graphics and Multimedia Part #2
COM148X1 Interactive Programming Lecture 6. Topics Today Generate Random Numbers Graphics Animation.
GDI+ 1. Objectives 2 GDI+ class  Create and render Graphic  Display information on the computer screen, printer 3.
McGraw-Hill © 2010 The McGraw-Hill Companies, Inc. All rights reserved. Chapter 13 Graphics, Animation, Sound and Drag-and-Drop.
Lecture 5 Graphics Erick Pranata. » Graphics Overview » About GDI+ » Getting Started.
1 Graphic Device Interface (GDI). 2 Class Form A Form is a representation of any window displayed in your application. The Form class can be used to create.
Object Query Language (OQL) Marián Kamenišťák MFF – UK Praha
Dôležité triedy a interface: Cipher MAC SecureRandom KeyGenerator KeyPairGenerator Signature KeyStore.
Images Part 11 dbg. 2 Images The form and several controls can display a number of different types of image files in the BackgroundImage Property. These.
Atomic Force Microscopy
VISUAL C++ PROGRAMMING: CONCEPTS AND PROJECTS Chapter 6A Methods (Concepts)
GDI +. Graphics class's methods System.Drawing Graphics Objects.
YOUR LOGO Class, members, delegate, generic. YOUR LOGO Access modifiers ModifierExplanation privateThe member is visible only in the class. publicThe.
Lines, Curves, and Area Fill
Graphics.
Computer Programming I
Graphics and Multimedia
Dátové štruktúry pre analýzu obrazu
Obsluha výnimiek.
Java Collections Framework
Drawing Mouse and Keyboard Events Part A - Drawing
Prednáška 8 podprogramy typy podprogramov lokálne a globálne objekty
Motivácia Ukážky vypracovaných projektov: Projekt 1 , Projekt 2 , Projekt 3 Opakovanie HTML Kaskádové štýly alebo CSS Java Script PHP SQL Značka pre telo.
Základná charakteristika médií Stavba CD-R, CD-RW a DVD
Makrá v PowerPointe Joshua Lajčiak.
Vlákna a konkurentné výpočty
Typy informácií a ich prezentácia a spracovanie
Formáty grafických súborov
Sieťový operačný systém
Movie-Making ďalej Kežmarská 30, Dominik Bari.
Integritné obmedzenia v SQL
Skrutkovica na rotačnej ploche
ThS. Nguyễn Hà Giang Khoa CNTT - Hutech
CASE Tools Graphical User Interface Programming Using C#
Klasa grafik.
Skrutkové plochy.
Ing. Anita Sáreníková/ Cvičenia z aplikovanej informatiky
Polymorfizmus.
Open Access v H2020 Barbora Kubíková Národný kontaktný bod
Prednáška 1 Image grafický editor shape toolbar.
ROVINNÉ (2D) SYMBOLY DWG
Korytnačky na farme a korytnačí futbal
התוכנית הגראפית הראשונה
Tabuľky.
NOVINKA 2015.
Object Oriented Programming
Chapter 12 Graphics in Windows and the Web
Images and Bitmaps (in C#)
Color Box Button - Gray Type : object Type : object Type : object
Graphical Analysis of Motion
Lines, Curves and Area Fills
Presentation transcript:

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: 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

Š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.

Š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)

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

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)

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)

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)

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)  

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)

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:

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

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

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

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.

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