Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałCelestyna Cegielski Został zmieniony 10 lat temu
1
Grafika komputerowa Wykład 2 Wykorzystanie podstawowych usług bibliotecznych (API) w operacjach graficznych
2
Dlaczego stosujemy gotowe komponenty:
Współczesna inżynieria oprogramowania opiera się na możliwie najszerszym wykorzystaniu gotowych uniwersalnych komponentów Wykorzystanie gotowych komponentów zmniejsza nakłady pracy na budowę aplikacji, redukuje ryzyko błędów i eliminuje konieczność szczegółowego zapoznawania się z niskopoziomowymi technikami i algorytmami System operacyjny i środowiska do tworzenia aplikacji dostarczają zestawu komponentów (bibliotek, klas, funkcji, czasem gotowych do wywołania programów) realizujących typowe funkcje. Taki zestaw tworzy interfejs programistyczny (ang. Application Programming Interface – API) do usług określonej kategorii – w naszym przypadku związanych z grafiką komputerową W przypadku grafiki odpowiednie API stwarzają dodatkowo poziom abstrakcji izolujący programistę od specyfiki dołączonego sprzętu W przypadku stosowania JP Java uzyskujemy dodatkowo niezależność od środowiska (sprzętu, systemu operacyjnego), w którym wykonuje się nasza aplikacja graficzna
3
Typowa architektura komponentów wspomagających aplikacje graficzne:
Aplikacja użytkownika Biblioteki specyficzne dla środowiska deweloperskiego i języka programowania (AWT, Swing, Java2D, Java3D w JP Java) Adapter OpenGL Adapter usług rodzimych Adapter Direct3D System operacyjny Usługi „rodzime” systemu operacyjnego (np.. GDI w windows) OpenGL Direct3D Sterowniki specyficzne dla sprzętu Sprzęt graficzny
4
Ogólne zasady korzystania z podstawowych usług API dla grafiki komputerowej 2D:
Podstawowe tryby tworzenia obrazu: poza ekranem - obraz tworzony (lub przetwarzany) jest w obiekcie (strukturze danych), który stanowi reprezentację tablicy pikseli obrazu rastrowego. obiekt taki nie jest bezpośrednio związany z GUI i operacje graficzne na nim wykonane nie są widoczne na ekranie. na ekranie - obraz tworzony jest bezpośrednio na ekranie, wszelkie operacje na obrazie są natychmiast widoczne na ekranie. do dostępu do ekranu służy odpowiednio zdefiniowana klasa związana z oknem zarządzanym przez modułu GUI w SO. operacje w tym trybie mogą być wolniejsze i mogą obowiązywać dodatkowe ograniczenia wynikające z możliwości zainstalowanego sprzętu (np. ograniczona maksymalna rozdzielczość obrazu).
5
Ogólne zasady korzystania z podstawowych usług API dla grafiki komputerowej 2D:
Metody 1 (poza ekranem) używamy w operacjach związanych z przetwarzaniem obrazu lub jego generowaniem w trybie niezależnego ustawiania poszczególnych pikseli. Metody 2 (na ekranie) używamy w aplikacjach wymagających interakcji użytkownika z obrazem (np. programy do malowania, konfigurowania scen 3D poprzez manipulację na jej widoku, programy do modelowania geometrycznego, programy typu CAD itp). Przykład tworzenia obrazu poza ekranem i zapisania gotowego obrazu na ekran (ang. back buffer) Przykład operacji graficznych wykonywanych bezpośrednio na ekranie w trybie interakcyjnym – manipulacja pozycją kamery w scenie 3D Niezależnie od używanej metody operacja mogą mieć charakter operacji grafiki wektorowej lub grafiki rastrowej.
6
Kontekst rysowania określa takie parametry jak:
Ogólne zasady korzystania z podstawowych usług API dla grafiki komputerowej 2D: Obrazy tworzymy na powierzchni - panelu, która odpowiada dwuwymiarowej tablicy pikseli obrazu rastrowego (również dla operacji wektorowych) Sposób wykonania operacji graficznej (np. rysowania odcinka) zależy od kontekstu rysowania. Kontekst rysowania określa takie parametry jak: kolor pisaka, szerokość pisaka, styl linii (ciągła, przerywana, kropkowa), tryb rysowania - sposób w jaki kolor piksela kanwy w punkcie rysowania wpływa na kolor piksela po narysowaniu: zastępowanie koloru (kolor wynikowy zawsze taki jak pisaka), mieszanie kolorów (kolory tła i pisaka są mieszane w proporcjach określonych przez współczynniki zdefiniowane dla tła i pisaka (tzw. współczynniki kanału alfa) tryb XOR
7
Elementarne operacje graficzne:
Podstawowe operacje grafiki wektorowej: ustawianie kontekstu rysowania (kolor, rodzaj i grubość linii itp..) rysowanie kształtu (odcinka, łamanej, boków figury geometrycznej, krzywej itp.) wypełnianie kształtu (zamkniętego) wpisywanie tekstu do obrazu Podstawowe operacje grafiki rastrowej: spakowanie/rozpakowanie struktury danych reprezentujących atrybuty pojedynczego piksela odczyt atrybutów wskazanego piksela, zapis atrybutów wskazanego piksela, odczyt bloku pikseli zapis bloku pikseli Dla obydwu trybów: inicjalizowanie pustego obrazu (tworzenie kanwy), odczyt z pliku graficznego zapis do pliku graficznego
8
Pakiety do grafiki 2D w środowisku Java:
W Javie API do tworzenia grafiki 2D i operacji na obrazach jest bardzo rozbudowane. Przedstawimy tylko najpotrzebniejsze i najczęściej używane komponenty i typowy sposób pracy z nimi. AWT – Abstract Window Toolkit, pakiet do budowy graficznych interfejsów użytkownika (ang. Graphical User Interface - GUI) pochodzący z pierwszych wersji Javy wykorzystujący usługi rodzimego SO Java2D - zestaw komponentów rozszerzających AWT wspomagających efektywną implementację grafiki w Javie Swing - pakiet do budowy GUI niezależny od rodzimej platformy o funkcjonalności szerszej niż AWT Java Advanced Imaging - rozbudowany pakiet do wykonywania zaawansowanych operacji z zakresu przetwarzania i analizy obrazów
9
Pakiety do grafiki 2D w środowisku Java:
Okno na ekranie jest reprezentowane za pomoca obiektu klasy JFrame Z każdym obiektem JFrame związana jest powierzchnia zawartości Referencję do powierzchni zawartości można uzyskać za pomocą metody getContentPane(); Do powierzchni zawartości można dodać panel (obiekt typu JPanel) służący do rysowania i umieszczania innych komponentów GUI. Gdy moduł zarzadzający oknami stwierdzi, że należy utworzyć lub odświeżyć obraz na panely wywoła on funkcję paintComponent() klasy JPanel Aby utworzyć własna procedurę rysowania obrazu należy utworzyć klasę dziedziczącą z JPanel i jej obiekt dodać do powierzchni zawartości a operacje rysujące umieścić w metodzie paintComponent() Rysowanie odbywa się za pomocą kontekstu rysowania przekazanego jak parametr do automatycznie wywołanej metody paintComponent()
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.