Java 2D - Java 2D - Wikipedia
![]() | tento článek ne uvést žádný Zdroje.Květen 2012) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v výpočetní, Java 2D je API pro kreslení dvourozměrný grafika za použití Programovací jazyk Java. Ke každé operaci 2D 2D kreslení lze nakonec přistupovat jako plnicí A tvar používat malovat a skládání výsledek na obrazovka.
Organizace
Rozhraní Java 2D API a jeho dokumentace jsou k dispozici ke stažení jako součást JDK 6. Třídy Java 2D API jsou organizovány do následujících balíčků v JDK 6:
java.awt
Hlavní balíček pro Javu Sada nástrojů pro abstraktní okna.java.awt.geom
Java standardní knihovna dvourozměrných geometrických tvarů, jako jsou čáry, elipsy a čtyřúhelníky.java.awt.font
Knihovna pro manipulaci glyfy v Javě.java.awt.color
Knihovna zabývající se mnoha různými způsoby, jak lze barvu znázornit.obrázek java.awt
Knihovna pro manipulaci s grafickými obrázky.java.awt.print
Knihovna nástrojů pro psaní na papír.
Základní pojmy
Tyto objekty jsou nezbytnou součástí každé operace 2D 2D kreslení.
Tvary
A tvar v Javě 2D je hranice, která definuje vnitřek a vnějšek. Pixely uvnitř tvaru jsou ovlivněny operací kreslení, vnější nejsou.
Snažím se vyplnit přímku úsečka bude mít za následek, že nebudou ovlivněny žádné pixely, protože takový tvar neobsahuje žádné pixely sám. Místo toho tenký obdélník musí být použito, aby tvar obsahoval několik pixelů.
Barvy
A malovat generuje barvy pro každý pixel operace výplně. Nejjednodušší barva je java.awt.Color
, který generuje stejnou barvu pro všechny pixely. Složitější barvy mohou vytvářet přechody, snímky, nebo dokonce libovolná kombinace barev. Vyplněním kruhového tvaru pomocí žluté barvy vznikne plný žlutý kruh, zatímco vyplněním stejného kruhového tvaru pomocí barvy, která generuje obrázek, se vytvoří kruhový výřez obrázku.
Kompozity
Během jakékoli operace kreslení existuje zdroj (pixely vytvářené barvou) a a destinace (pixely již na obrazovce). Za normálních okolností zdrojové pixely jednoduše přepíší cílové pixely, ale kompozitní umožňuje změnu tohoto chování.
Složený, vzhledem ke zdrojovým a cílovým pixelům, vytváří konečný výsledek, který nakonec skončí na obrazovce. Nejběžnější kompozit je java.awt.AlphaComposite
, které mohou zpracované pixely považovat za částečně průhledné, takže cílové pixely do určité míry prosvítají.
Plnicí
Na vyplnit tvar, prvním krokem je určit, které pixely spadají do tvaru. Tyto pixely budou ovlivněny operací vyplňování. Pixely, které jsou částečně uvnitř a částečně mimo tvar, mohou být ovlivněny v menší míře, pokud Anti aliasing je povoleno.
Barva je poté požádána o vygenerování barvy pro každý z pixelů, které mají být natřeny. V běžném případě jednobarevné výplně bude každý pixel nastaven na stejnou barvu.
Kompozit vezme pixely generované barvou a zkombinuje je s pixely, které jsou již na obrazovce, aby vytvořil konečný výsledek.
Pokročilé objekty
Na tyto objekty lze pohlížet jako na plnění svých povinností ve smyslu výše popsaných jednodušších objektů.
Přeměnit
Každá operace Java 2D podléhá a přeměnit, takže tvary lze překládat, otáčet, stříhat a měnit jejich měřítko při kreslení. Aktivní transformace je nejčastěji transformace identity, který nedělá nic.
Na vyplňování pomocí transformace lze pohlížet jako na vytváření nového transformovaného tvaru a jeho vyplnění.
Mrtvice
Navíc k vyplnit provoz, Java 2D poskytuje a kreslit úkon. Zatímco výplň kreslí vnitřek tvaru, kreslí jeho obrysy. Obrys může být stejně jednoduchý jako tenká čára nebo komplikovaný jako přerušovaná čára, přičemž každá pomlčka má zaoblené hrany.
Objekt odpovědný za generování obrysu je mrtvice. Vzhledem k vstupnímu tvaru vytvoří tah nový tvar představující jeho obrys. Například nekonečně tenký segment čáry (bez vnitřku) může být vytažen do obdélníku o šířce jednoho pixelu.
Operaci kreslení lze tedy popsat jako vytvoření nového, pohladeného objektu a následné vyplnění tohoto objektu.
Technicky vzato je tah nutný pouze k přijetí vstupního tvaru a vytvoření nového tvaru. Implementace tahu poskytovaná v prostředí Java 2D implementuje výše popsaná pravidla osnovy, ale vlastní psaný tah může vytvořit jakýkoli požadovaný tvar.
Optimalizace
Koncepčně lze nakreslení přímé černé čáry v prostředí Java 2D považovat za vytvoření úsečky, její transformaci podle aktuální transformace, její hladení za účelem vytvoření tenkého obdélníku, dotazování tohoto tvaru na výpočet ovlivněných pixelů, generování pixelů pomocí java.awt.Color. BLACK
a poté výsledky komponovat na obrazovku.
Provádění celé této posloupnosti kroků pro každou operaci kreslení by však bylo velmi neefektivní. Java 2D proto optimalizuje běžné operace kreslení, takže mnoho z těchto kroků lze přeskočit. Pokud je například barva jednoduchá plná barva, není nutné ji ve skutečnosti přikazovat, aby vygenerovala seznam barev, které se mají malovat. Podobně, pokud se používá výchozí plně neprůhledný kompozit, je ve skutečnosti jeho požádání o provedení operace skládání zbytečné a zbytečné úsilí.
Java 2D provádí minimální množství práce potřebné k jeho provedení zdát se jako by prováděl všechny tyto kroky pro každou operaci, proto si zachovává jak velkou flexibilitu, tak vysoký výkon.
Destinace
Pro zjednodušení textové příklady uvedené v tomto článku předpokládají, že obrazovka je cílovým zařízením. Cílovým místem však může být cokoli, například tiskárna, obraz z paměti nebo dokonce objekt, který přijímá grafické příkazy Java 2D a překládá je do vektorové grafiky obrazové soubory.
Spolupráce Java2D / OpenGL
Od té doby Java SE 6, Java2D a OpenGL se staly interoperabilními, což umožňuje například kreslení animované 3D grafiky namísto ikon na tlačítku (viz JOGL ).