2 Grafický výstup s využitím knihovny



Podobné dokumenty
Základní grafika. Princip zobrazování obsahu. Grafický kontext. Zobrazovací metody. Přednáška 3

Java - Kresba. 2/28/11 1/8 Java - kresba

Java aplety. Předávání parametrů z HTML

2 Tvorba interaktivních grafických programů

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

13 Barvy a úpravy rastrového

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

11 Zobrazování objektů 3D grafiky

Knihovna CanvasLib TXV první vydání prosinec 2014 změny vyhrazeny

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Kreslíme do webu. Canvas

INFORMATIKA PRO ZŠ. Ing. Veronika Šolcová

4 Rasterizace liniových objektů

Popis základního prostředí programu AutoCAD

Obsah. Předmluva 15 KAPITOLA 1 17 KAPITOLA 2 39

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

Obsah KAPITOLA 1 13 KAPITOLA 2 33

Obsah. Předmluva 13 KAPITOLA 1 KAPITOLA 2

Zdroj:

10 Balíčky, grafické znázornění tříd, základy zapozdření

UNIVERZITA PARDUBICE

1. Úvod do obsluhy AutoCADu

VÝUKA PČ NA 2. STUPNI základy technického modelování. Kreslící a modelovací nástroje objekty, čáry

Profilová část maturitní zkoušky 2013/2014

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Mgr. Vlastislav Kučera Header, footer, navv, article, section, boxy, margin, padding, border

Jazyk C# (seminář 9)

Jak namalovat obraz v programu Malování

SkiJo podpora pro vytyčování, řez terénem a kreslení situací

Jak namalovat obraz v programu Malování

Jihočeská univerzita v Českých Budějovicích Pedagogická fakulta Katedra informatiky Akademický rok:

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

OBSAH. ÚVOD...5 O Advance CADu...5 Kde nalézt informace...5 Použitím Online nápovědy...5. INSTALACE...6 Systémové požadavky...6 Začátek instalace...

12 Metody snižování barevného prostoru

Pokyny pro žáky k testování písemné zkoušky na počítači

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

9 Prostorová grafika a modelování těles

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou

TDS-TECHNIK 13.0 pro ZwCAD

1. Dědičnost a polymorfismus

9. Práce s naskenovanými mapami

Profilová část maturitní zkoušky 2017/2018

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

TDS-TECHNIK 13.0 pro BricsCad

COREL PHOTO-PAINT SEZNÁMENÍ S PROGRAMEM. Lenka Bednaříková

Výhody programu OCAD

Seznámení s AWT: práce s okny, grafikou a textem

Generické programování

5 Algoritmy vyplňování 2D oblastí

verze Grafický editor PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ 1 Obsah

CorelDRAW Graphics Suite X5

AutoCAD nastavení výkresu

1.1. Spuštění ArchiCADu Práce s projektem Pracovní plocha 19

GUI - úvod. V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky.

Popis výukového materiálu

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Vektorizace obrázků. Co se naučíte. Vítá vás aplikace CorelDRAW, komplexní profesionální program pro grafický návrh a práci s vektorovou grafikou.

Prostředí Microstationu a jeho nastavení. Nastavení výkresu

3D sledování pozice vojáka v zastavěném prostoru a budově

Kreslení a vlastnosti objektů

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

Hydroprojekt CZ a.s. WINPLAN systém programů pro projektování vodohospodářských liniových staveb. HYDRONet 3. Modul SITUACE

PROGRAMOVÁNÍ PRO MS WINDOWS 1

Inovace a zkvalitnění výuky prostřednictvím ICT Pokročilé metody parametrického modelování

Uživatelské rozhraní grafického zadávání

Odborný garant: Doc. Ing. Miroslav Píška, CSc.

Cvičení 6 PARAMETRICKÉ 3D MODELOVÁNÍ TVORBA VÝKRESU OBROBKU Inventor Professional 2012

MALUJEME. ZÁKLADNÍ VZDĚLÁVÁNÍ, INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE, 1. STUPEŇ ZŠ. Autor prezentace Mgr. Hana Nová

Popis ovládání aplikace - Mapový klient KÚPK

Připravil: David Procházka. Vertex Buffer Objects

- obvyklejší, výpočetně dražší - každé písmeno je definováno jako zakřivený nebo polygonální obrys

TDS-TECHNIK 13.1 pro SolidWorks

Evropská obchodní akademie, Děčín I, Komenského náměstí 2, příspěvková organizace IČ tel

UNIVERZITA PARDUBICE

Předpoklady Instalace programu Obnovení výchozích předvoleb Další zdroje informací

HVrchlík DVrchlík. Anuloid Hrana 3D síť

8 Třídy, objekty, metody, předávání argumentů metod

Výukový manuál 1 /64

OBSAH ADOBE ILLUSTRATOR CS6 OFICIÁLNÍ VÝUKOVÝ KURZ

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou

4. cvičení. 15. října 2014

BARVY. Příkaz barva. Barvy TrueColor. Se objeví dialogové okno

Projekt Obrázek strana 135

CORELDRAW SEZNÁMENÍ S PROGRAMEM. Lenka Bednaříková

Rovnice přímek v rovině

Virtuální metody - polymorfizmus

TECHNICKÉ KRESLENÍ. Technické normy. Popisové pole. Zobrazování na technických výkresech

Inovace bakalářského studijního oboru Aplikovaná chemie

AutoCAD výstup výkresu

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Programování v C++ 1, 6. cvičení

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Základy programování v jazyce Python pro střední školy

TECHNICKÉ KRESLENÍ A CAD. Přednáška č.6

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Univerzita Palackého v Olomouci. Základy kreslení 2D výkresů v AutoCADu 2013

Transkript:

2 Grafický výstup s využitím knihovny Studijní cíl Tento blok je věnován základním principům při vytváření grafického výstupu pomocí standardních metod, které poskytuje grafické rozhraní. V textu budou objasněny principy zobrazení grafického výstupu, jednotlivé zobrazovací metody, pojem grafický kontext, základní práce s barvami, kreslení základních grafických primitiv a zobrazení textu. Doba nutná k nastudování 3-4 hodiny Průvodce studiem Při studiu tohoto bloku se předpokládá, že student ovládá základy programování v jazyce Java a je schopen vytvářet jednoduché aplikace s využitím grafického uživatelského rozhraní. 2.1 Program s grafickým výstupem V minulém bloku byly vysvětleny principy vytváření aplikací s využitím grafického uživatelského rozhraní (GUI). To samo o sobě znamená pouze to, že programy využívají pro komunikaci s uživatelem rozhraní, které je v grafickém režimu. Program běží v okně, jenž může obsahovat různé ovládací prvky, a celé je to řešeno v grafickém nikoliv textovém režimu. V tomto bloku bude cílem naučit se vytvářet s využitím standardních grafických metod takové programy, které budou schopny produkovat na obrazovce (respektive v okně aplikace) určitý grafický výstup. Ke splnění tohoto cíle je znát: Co se má kreslit obecně data, která specifikují rastrový nebo vektorový obraz; Jak se to nakreslí kreslící metody, které realizují příslušný grafický výstup; KST/IPOGR 1-1 Petr Veselý

Kdy se to nakreslí správné umístění kreslících metod v kódu tak, aby byl výstup realizován právě tehdy, když je to potřeba. 2.2 Princip zobrazování obsahu V dalším výkladu budeme předpokládat výstup na zařízení typu monitor, neboť výstup na tiskové výstupní zařízení probíhá v některých aspektech odlišně. Grafický výstup probíhá vždy (mimo specifických případů kreslení na celou plochu obrazovky) na plochu určité vizuální komponenty, která je k tomu určena. Překreslení (vykreslení) obsahu komponenty se realizuje při příchodu zprávy paint. Standardně se o zobrazení stará samostatné vlákno a principiálně nelze určit přesný okamžik vykreslení. I v případě, že je požadováno okamžité překreslení obsahu komponenty, je obsah vykreslen při nejbližším vhodném okamžiku. Rodičovská komponenta zabezpečí překreslení dceřiných komponent (tj. těch, které jsou vloženy do jejího kontejneru). Každá komponenta je zodpovědná za svůj obsah, to znamená, že každá komponenta musí znát jak má vypadat a co má výt na její ploše zobrazeno. Při vykreslování komponent je důležité je pořadí komponent (z-order). Obrázek 1: Hierarchické uspořádání komponent ovlivní pořadí vykreslování KST/IPOGR 1-2 Petr Veselý

2.3 Zobrazovací metody Zobrazovací metody jsou odpovědí na otázku kdy, v které části kódu kreslit. Kód pro zobrazení (co se má vykreslit) je v metodě: paint (Graphics g) pro AWT paintcomponent (Graphics g) pro Swing Tyto zděděné prázdné metody je třeba přepsat (+ volání metody předka). Pro zobrazení komponenty se volá: clearrect( ), která zabezpečí vymazání plochy (části) barvou pozadí; paintcomponent( ) případně paint( ), která provede vykreslení obsahu Pro programové překreslení se volá metoda: repaint(), která dále volá metodu update (Graphics g) { g.clearrect( ) paintcomponent(g); // zabezpečí vymazání // respektive paint (g); } Přepsáním metody update(), tak, že vynecháme volání clearrect( ), lze zabezpečit NEPŘEMAZÁVÁNÍ původního obsahu 2.4 Grafický kontext Z pohledu programování grafických aplikací pro operační systém, který používá grafické uživatelské rozhraní (systém oken) je každá komponenta oknem, to znamená určitou oblastí na obrazovce, do které může být směřován grafický výstup. Pro kreslení do libovolného okna je potřeba jednoznačně z pohledu operačního systému specifikovat okno, kam bude výstup směřovat a získat pro toto okno tzv. grafický kontext. V knihovnách AWT a JFC je grafický kontext zapouzdřen KST/IPOGR 1-3 Petr Veselý

do třídy Graphics a Graphics2D, které nám poskytují především jednotlivé kreslící metody pro realizaci grafického výstupu v daném okně. Jinými slovy: při požadavku na kreslení na plochu určité komponenty (okna) je třeba získat instanci třídy Graphics (nebo Graphics2D) pro danou komponentu a pomocí kreslících metod získané instance realizovat požadovaný výstup. Třída Graphics je v balíčku java.awt. V Javě je grafický kontext STAVOVÝ (pamatuje si stav, např. nastavenou barvu). Instanci třídy Graphics lze získat pro každou třídu, která je potomkem Components. Instanci třídy Graphics nelze vytvořit pomocí konstruktoru, ale lze ji získat: jako parametr v zobrazovacích metodách paint a paintcomponent; pomocí metody getgraphics(), která vytvoří nový grafický kontext pro danou komponentu. 2.5 Double Buffering Double Buffering je technika, zamezující blikání obrazu při překreslování obsahu komponenty, ke kterému dochází díky cyklickému opakování rychle se střídajících jednotlivých fází při kreslení, jak je naznačeno na následujícím obrázku. hotový snímek vymazání obsahu postupné vykreslení jednoho objektu vykreslení dalšího objektu = hotový snímek Obrázek 2: Fáze při animaci objektu (pohybující se auto) KST/IPOGR 1-4 Petr Veselý

Princip Double Bufferingu spočívá v to, že místo vykreslování jednotlivých fází při komponování výsledného obrazu přímo na výstupní zařízení, je obraz postupně (tak jak vzniká) vykreslován do pomocné obrazové paměti (tzv. zadní plátno) a teprve v okamžiku, kdy je obraz zcela hotov, je kompletně přenesen na zobrazovací zařízení. Tím je zamezeno střídání se zobrazení částí obrazu a samotného pozadí, které způsobovalo nepříjemný efekt blikání. Obrázek 3: Princip Double Bufferingu 2.6 Kreslení grafických primitiv Mezi základní grafické primitivy, jejichž zobrazení podporuje třída Graphics, patří úsečka, lomená čára, pravoúhelník se stranami rovnoběžnými s osami souřadnicového systému, pravoúhelník se zaoblenými rohy, elipsa (kuželosečka) v základní poloze, eliptický oblouk, eliptická výseč, mnohoúhelník, text a rastrový obrázek (bitmapa). Základní kreslící metody třídy Graphic lze rozdělit na zobrazení textu drawstring, zobrazení rastrového obrázku drawimage, zobrazení liniových objektů (případně zobrazení obrysu plošných objektů) drawxxx a zobrazení výplně plošných objektů fillxxx. KST/IPOGR 1-5 Petr Veselý

Obrázek 4: Grafické primitivy, které je možno zobrazit pomocí metod třídy Graphics 2.6.1 Úsečka, lomená čára void drawline(int x1, int y1, int x2, int y2) [x1, y1] představuje počáteční bod, [x2, y2] představuje koncový bod. Metoda kreslí čáru včetně počátečního a koncového bodu. void drawpolyline(int[] xpoints, int[] ypoints, int npoints) Metoda kreslí lomenou čáru mezi jednotlivými body. Jejich souřadnice jsou uloženy v polích xpoints a ypoint. Parametr npoints určuje, kolik prvků z polí souřadnic bude použito. Pokud je poslední a první bod totožný, je lomená čára uzavřena. 2.6.2 Pravoúhelník void drawrect(int x, int y, int width, int height) Levý horní roh je určen bodem se souřadnicemi [x, y], pravý dolní roh je určen bodem se souřadnicemi [x+width, y+height]. void fillrect(int x, int y, int width, int height) Levý horní roh je určen bodem se souřadnicemi [x, y], pravý dolní roh je určen bodem se souřadnicemi [x+width-1, y+height-1]. KST/IPOGR 1-6 Petr Veselý

2.6.3 Pravoúhelník s oblými rohy void drawroundrect(int x, int y, int width, int height, int arcwidth, int archeight) Obrys pravoúhelníku se zakulacenými rohy je vykreslen rohovými oblouky o horizontálním poloměru arcwidth a vertikálním poloměru archeight. Rozměry jsou totožné s drawrect. void fillroundrect(int x, int y, int width, int height, int arcwidth, int archeight) Výplň pravoúhelníku se zakulacenými rohy je vykreslena rohovými oblouky o horizontálním poloměru arcwidth a vertikálním poloměru archeight. Rozměry jsou totožné s fillrect. Pojmy k zapamatování Grafický kontext, Graphics, Double Buffering, z-order, grafická primitiva, Otázky na procvičení 1. Jaký je princip obnovování obsahu okna (komponenty)? 2. Na čem závisí pořadí překreslování jednotlivých komponent? 3. Co je to grafický kontext? 4. Do jaké třídy je zapouzdřen v knihovnách AWT a JFC? 5. Jaké metody poskytuje třída Graphics? 6. Jak lze získat instanci třídy Graphics? 7. Co to znamená, když je grafický kontext stavový? 8. Které metody jsou zodpovědné za obsah okna (komponenty)? 9. Co je to a jak funguje Double Buffering? 10. Jakým způsobem se nastavuje barva pro kreslení? Odkazy a další studijní prameny http://owebu.bloger.cz/programovani/java-grafika-59-dil http://java.sun.com/docs/books/tutorial/2d/index.html http://www.linuxsoft.cz/article.php?id_article=244 Herout, P. Java a grafické uživatelské prostředí. České Budějovice : Koop, 2007. KST/IPOGR 1-7 Petr Veselý