Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit)



Podobne dokumenty
Grafika i komunikacja człowiek komputer Laboratorium. Część 3: Tekst, czcionki, kolory

Język Java. Rysowanie GUI Określanie wyglądu komponentów

Grafika i komunikacja człowiek komputer Laboratorium. Część 2: Graphics

Programowanie komputerów Wykład 6: Aplety Java

Grafika i komunikacja człowiek komputer Laboratorium. Część 1: Wstęp do grafiki

Podstawy Swing. Tomasz Borzyszkowski

Kurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016

Tworzenie elementów graficznych

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Programowanie obiektowe

Programowanie Multimediów JAVA. wprowadzenie do programowania (2/3) [1]

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Podstawy Języka Java

Język JAVA podstawy. Wykład 5, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Pascal - grafika. Uruchomienie trybu graficznego. Moduł graph. Domyślny tryb graficzny

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Rozdział 6 Grafika i multimedia w Javie

Programowanie Multimediów. Programowanie Multimediów JAVA. grafika w JAVA 2D API [1]

Praktyczny kurs Java. Wydanie II

4. W konstruktorze klasy Grafika wywołaj metodę określającą rozmiary ramki oraz ustaw kolor tła metodą setbackground():

Programowanie zdarzeniowe

Podstawy programowania GUI niskiego poziomu. APLETY.

Język JAVA podstawy. Wykład 5, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Kontenery i komponenty graficzne

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Laboratorium z informatyki sem. III/ćw. 2 Wydział Transportu PW /19 MATERIAŁY POMOCNICZE DO ĆWICZENIA 2

Spis treści. 1 Aplet. 2 Od aplikacji do apletu. 1 Aplet 1. 2 Od aplikacji do apletu 1. 3 Budowa apletu 3. 4 Cykl życia apletu 4

II Tworzenie klasy Prostokąt dziedziczącej z klasy wątku

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

Multimedia JAVA. Historia

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Java jako zdalny interfejs aplikacji Webowych aplety

Szybkie tworzenie grafiki w GcIde

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Visual Studio instalacja

STWORZENIE PRZYKŁADOWEJ

INSTRUKCJA DO ĆWICZENIA 5

Kurs programowania. Wykład 6. Wojciech Macyna. 7 kwietnia 2016

Dokumentacja do API Javy.

CorelDRAW. wprowadzenie

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006

Kurs WWW. Paweł Rajba.

Programowanie w Internecie. Java

Programowanie obiektowe zastosowanie języka Java SE

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 2

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Wykład 11: Programowanie Apletów

Język JAVA podstawy. wykład 1, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Programowanie obiektowe

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

Java jako język programowania

Programowanie w Javie Wykład 6 Okienka w Javie (AWT)

Przewodnik po obszarze roboczym

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Podstawy Języka Java

JAVA CZ.2 Programowanie obiektowe. poniedziałek, 20 kwietnia 2009

Języki i metody programowania Java Lab2 podejście obiektowe

Podstawy Informatyki Wykład V

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Paweł Kaźmierczak. styczeń 2009

Rysowanie precyzyjne. Polecenie:

Programowanie graficznych interfejsów użytkownika

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Tworzenie prezentacji w MS PowerPoint

Laboratorium z informatyki sem.iii/ćw. 4 Wydział Transportu PW /19

Dziedziczenie. Zadanie 1

Graphic User Interfaces pakiet Swing

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

PARADYGMATY PROGRAMOWANIA Wykład 4

Kurs programowania 2 - listy

Autokształtów Autokształt AUTOKSZTAŁTY Wstaw Obraz Autokształty Autokształty GDYNIA 2009

Janusz Ganczarski. OpenGL Pierwszy program

Programowanie obiektowe

Wymagania edukacyjne - Informatyka w klasie I

Podstawowe części projektu w Javie

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Dodanie nowej formy do projektu polega na:

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

Języki i metody programowania Java. Wykład 2 (część 2)

Java - interfejs graficzny

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

JBuilder X: Grafika w Javie (dodatek do książki JBuilder X: Efektywne programowanie w Javie, Wydawnictwo Helion, Gliwice 2004)

Spis treści CZĘŚĆ I. NIEPARAMETRYCZNE PROJEKTOWANIE 2D...31

Programowanie aplikacji na urządzenia mobilne

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Rysowanie punktów na powierzchni graficznej

Transkrypt:

Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit)

Biblioteka Abstrakcyjnych Narzędzi Okienkowych AWT (Abstract Window Toolkit) jako historycznie pierwsza w JDK dostarcza szereg elementów wykorzystywanych do tworzenia interfejsów graficznych dla potrzeb komunikacji z użytkownikiem i obsługi jego danych. Component Container Button Canvas Checkbox Label Textfield Window Panel Frame Applet Elementy biblioteki AWT Do najbardziej istotnych elementów tego pakietu należy zaliczyć: Ważniejsze składniki biblioteki AWT to: Składnik (Component) może być etykietą (Label), polem tekstowym (TextField), przyciskiem (Button) itp.; Pojemnik (Container) jest składnikiem AWT, w którym mogą być umieszczane inne składniki; Panel (Panel) jest pojemnikiem, którego zawartość można wyświetlić na ekranie (aplet jest szczególnym przypadkiem panelu); Płótno (Canvas) jest miejscem na umieszczanie rysunków (na panelach też można rysować); Okno (Window) może zawierać ramki, paski przewijania itp.; Ramka (Frame) jest podstawowym składnikiem niezależnego okna. Pakiet AWT zarówno w wersjach wcześniejszych jak i w wersji 2 wyposażony jest w klasę Graphics, a od wersji 2 dodatkowo w klasę Graphics2D. Klasy te zawierają liczne metody umożliwiające tworzenie i zarządzanie grafiką w Javie. Podstawą pracy z grafiką jest tzw. kontekst graficzny, który jako obiekt posiada właściwości konkretnego systemu prezentacji np. panelu. W AWT kontekst graficzny jest dostarczany do komponentu poprzez następujące metody: paint paintall update print printall getgraphics Obiekt graficzny (kontekst) zawiera informacje o stanie grafiki potrzebne dla podstawowych operacji wykonywanych przez metody Javy. Zaliczyć tu należy następujące informacje: obiekt komponentu, który będzie obsługiwany, współrzędne obszaru rysowania oraz obcinania,

aktualny kolor, aktualne czcionki, aktualna funkcja operacji na pikselach logicznych (XOR lub Paint), aktualny kolor dla operacji XOR. Klasa Graphics umożliwia nam rysowanie prostych figur geometrycznych, przy czym można rysować tylko obrzeża figur, jak i figury wypełnione kolorem. Dostępne metody pozwalają na rysowanie: linii; kół i elips; prostokątów; wielokątów; Rysowanie figur geometrycznych (klasa Graphics). Aby coś narysować trzeba zdefiniować metodę paint() dostarczającą kontekstu graficznego: public void paint ( Graphics g ) { g.nazwametody ( parametry metody rysującej); Argumentem tej metody jest obiekt klasy Graphics, którą należy jawnie importować: import java.awt.graphics; Stosowany jest przy tym następujący układ współrzędnych: 0,0 X 20,20 60,80 Y Do rysowania figur służą nastepujace metody: Metoda drawline(int x p, int y p, int x k, int y k ) drawrect( int x p, int y p, int b, int h ) Przeznaczenie rysowanie prostej od punktu początkowego (x p, y p ) do punktu końcowego (x k, y k ) rysowanie prostokąta o wymiarach b h i współrzędnych lewego górnego

rogu (x p, y p ) drawpolygon(int[] x, int[] y, int n ) rysowanie wieloboku o współrzędnych n wierzchołków (x i, y i ) drawpolyline( int[] x, int[] y, int n ) rysowanie n odcinków linii łamanej o współrzędnych załomów (x i, y i ) drawoval( int x p, int y p, int b, int h ) drawarc( int x p, int y p, int b, int h, int φ p, int φ k ) rysowanie elipsy wpisanej w prostokąt rysowanie wycinka elipsy zawartego w sektorze kątowym (φ p, φ k ) Zastępując przedrostek draw w nazwie metody rysującej figury przedrostkiem fill można wypełniać figurę uprzednio zdefioniowanym kolorem np. filloval(...) Przykład 1 import java.awt.*; public class FiguryDEMO extends Frame { FiguryDEMO() { //konstruktor setsize(400,300); setvisible(true); settitle("użycie metod rysowania figur geometrycznych"); public void paint ( Graphics g ) { //przesuniecie układu wspolrzednych Insets b = getinsets(); g.translate (b.left, b.top); g.drawline( 20, 10, 70, 10 ); // prostokąt i zaokrąglony prostokąt g.fillrect( 50,50,100, 70 ); g.fillroundrect( 50, 130, 50, 50, 20, 20 ); int tabx [ ] = { 40, 60, 80,40 ;

int taby [ ] = { 40, 20, 40,40 ; int n = tabx.length; //trojkat g.fillpolygon( tabx, taby, n-1 ); g.translate(100,0); g.drawpolyline(tabx, taby, n); g.translate(-100,0); // elipsa, kolo, wycinek g.drawoval( 200, 50, 50, 50 ); g.filloval( 280, 50, 70, 50 ); g.fillarc( 200, 110, 50, 50, 0, 275 ); public static void main (String args[]) { new FiguryDEMO();

Kolory (klasa Color) Kolory w Javie są obiektami klasy Color. Klasa ta udostępnia metody setcolor(color), setbackground(color), setforeground(color), których argumentami są kolory. Można korzystać z zestawu standardowych predefiniowanych stałych kolorów ( Color.white, Color.black, Color.red itp.) lub tworzyć własne kolory jako dowolne kombinacje składowych RGB: Kolory podstawowe black darkgray lightgray pink blue gray magenta red yellow Przykład stworzenia obiektu klasy Color: cyan green orange white Color kolorek = new Color ( int R, int G, int B ); Wartości argumentów RGB muszą być w przedziale 0-255. Przykład 2 import java.awt.*; public class KolorDEMO extends Frame { KolorDEMO() { setsize(320,200); setvisible(true); settitle("uzycie kolorów + wypełnione figury - przykłady"); public void paint ( Graphics g ) { //przesuniecie układu wspolrzednych Insets b = getinsets(); g.translate (b.left, b.top); g.setcolor( new Color( 20, 20, 100)); g.fillrect( 10, 10, 50, 50 ); g.setcolor( Color.green ); g.filloval( 100, 50, 20, 20 ); public static void main (String args[]) { new KolorDEMO();

Metoda setcolor( ) ustala kolor, którym realizowane są kolejne operacje graficzne. Metody setbackground ( ) i setforeground ( ) ustalają, odpowiednio, kolor tła i kolor wszystkich elementów rysowanych na tym tle. Są jeszcze metody getcolor ( ), getbackground ( ), getforeground ( ) zwracające odpowiednio te kolory. Łańcuchy i czcionki (klasa Font) Czcionki są w Javie obiektami klasy Font. Aby wyświetlić tekst w trybie graficznym, należy: 1) utworzyć obiekt klasy Font zawierający krój, styl i rozmiar czcionki; 2) zadeklarować tę czcionkę jako aktualnie używaną w danym kontekście graficznym. 3) skorzystać z metody rysowania tekstu np. drawstring(). Dostęp do czcionek odbywa się poprzez trzy typy nazw: nazwy logiczne czcionek, nazwy czcionek systemowych, nazwy rodziny czcionek. Nazwy logiczne czcionek to nazwy zdefiniowane dla Javy. Możliwe są następujące nazwy logiczne czcionek w Javie: Dialog, DialogInput, Monospaced, Serif, SansSerif, Symbol. Nazwy logiczne są odwzorowywane na nazwy czcionek powiązane z czcionkami dla danego systemu. Wywołanie konstruktora klasy Font wymaga określenia nazwy lub nazwy logicznej czcionki, stylu, oraz rozmiaru czcionki (określony nie w pikselach lecz punktach typograficznych 1pt= 1/72 cala). Styl czcionki może być określony przez następujące pola klasy Font: Font.PLAIN tekst zwykły, Font.ITALIC tekst pochyły (kursywa), Font.BOLD tekst pogrubiony, Font.ITALIC + Font.BOLD tekst pogrubiony i pochyły. Do zgłaszania aktualnie używanej czcionki służy metoda setfont (Font). Łańcuch rysowany jest za pomocą metody drawstring( String str, int x, int y),gdzie (x,y) współrzędne rysowanego łańcucha.

Przykład 3 import java.awt.*; public class czcionkidemo extends Frame { czcionkidemo() { //konstruktor setsize(320,200); setvisible(true); settitle("użycie czcionek - przykłady"); public void paint ( Graphics g ) { //przesuniecie układu współrzędnych Insets b = getinsets(); // określa rozmiar ramek g.translate (b.left, b.top); // przesuwa początek //układu wsp. o ta wielkość Font f = new Font ( "TimesRoman", Font.PLAIN, 12 ); Font fb = new Font( "SansSerif", Font.BOLD, 12 ); g.setfont( f ); g.drawstring ("To jest normalna czcionka", 0, 50 ); g.setfont ( fb ); g.drawstring ("To jest gruba czcionka", 0, 100 ); public static void main (String args[]) { new czcionkidemo(); Własności poszczególnych czcionek można poznać dzięki obiektowi FontMetrics oraz metodzie getfontmetrics(). Obiekt ten ma kilkanaście metod, bardziej interesujące to: charwidth (char c) zwraca szerokość litery podanej jako parametr; getheight () zwraca typową wysokość wiersza tekstu zapisanego za pomocą fontu; getleading () zwraca odległość pomiędzy wierszami tekstu zapisanego za pomocą fontu; stringwidth (String s) zwraca długość wiersza tekstu zapisanego za pomocą fontu;