# Pokročilá 2D vektorová grafika ## Afinní transformace - umožňuje nastavit, jak chceme transformovat kreslený objekt - výsledná transformace se skládá z - posunutí (translace) - rotace okolo počátku souřadného systému - změna měřítka (scaling) na ose x či y - záleží na pořadí jednotlivých transformací **Instancování** - model je definován na jednom místě - můžeme jej použít víckrát na různých místech pomocí transformace ## Modelování objektů - objekt nevzniká postupným vykreslováním primitiv, ale je definovaný předem - popis objektu je uložen v paměti - objekt modelován složením primitiv **Cesta** - trajektorie pera opisující obrys objektu - může být **otevřená** nebo **uzavřená** - zahájení cesty, přidání primitiv do cesty, ukončení cesty - cesta může být definována po částech (primitivem může být jiná cesta) + složená z elementárních primitiv + podporovaná primitiva + bod, úsečka, obdélník, oblouk, parametrické křivky, ... **Region** - obrysem regionu je uzavřená cesta - region - uvažujeme vnitřek, nezajímá nás obryz - uzavřená cesta - neuvažujeme vnitřek + obvyklé booleovské operace + sloučení (union), průnik (intersection), rozdíl (subtraction), doplňek (XOR) - podporovaná primitiva - obdélník, elipsa a kruh, polorovina, ... + používány pro ořezávání (clipping) a constructive area geometry (CAG) **Ořezávání** (clipping) - odstraní veškerou grafiku mimo ořezovou oblast (= region) - zjednodušuje vykreslování složitějších tvarů - může být výpočetně náročnější ## Formáty vektorové grafiky - vektorovou grafiku lze obvykle uložit na disk nebo nahrát ze souboru **Binární formáty** - Windows Metafile (WMF), Enhanced Metafile (EMF), EMF+ - Portable Document Format (PDF) - OpenDocument Graphics (ODG) - Adobe Illustrator Artwork (AI) - Encapsulated PostScript (EPS) - CorelDraw (CDR) **Textové formáty** - Encapsulated PostScript (EPS) - Extensible Application Markup Language (XAML) - Scalable Vector Graphics (SVG) Formáty je možné konvertovat, ale může to vést ke ztrátě informace. **Ukládání vektorové grafiky** - vytvoření grafického kontextu pro vektorový formát - kreslení na grafický kontext - uvolnění grafického kontextu a uzavření souboru + pro textové soubory se často používá vlastní zápis do souboru dle specifikace **Načtení vektorové grafiky** - různé v různých knihovnách - u EMF vykonání grafických příkazů ze souboru - u SVG přes speciální komponentu pro zobrazení na obrazovce (převede SVG na rastr) **SVG formát** - určeno na web (HTML5), postaveno na XML - relativně hodně rozšířené - možnost animované grafiky **XAML formát** - určeno pro .NET desktopové aplikace - vytvořeno Microsoftem, postaveno nad XML - relativně hodně rozšířené - možnost animované grafiky - součástí mohou být i jiné prvky než grafika - UI, napojení na databáze, data binding, ... ## Zobrazení na tiskárně - papír nelze interaktivně posouvat - musí se zobrazit celá kresba + je potřeba brát v potaz fyzickou velikost papíru (formát) - Evropa - **ISO 216 A, B, C** - Nejběžnější **A4** - 210 x 297 mm - USA - Nejběžnější **ANSI A** (Letter) - 8.5 x 11 palců - 216 x 297 mm - většinou není možné kreslit na kraje papíru - minimálně 3 mm bílý okraj - papír se může sešívat + knihovny většinou podporují + dialog pro výběr tiskárny, formátu papíru, orientace, kvality, ... + vrací vytvořený grafický kontext + metody pro zahájení a dokončení tisku dokumentu nebo jedné strany