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



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

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

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

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

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

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

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

Java. Wykład 9. Piotr Tronczyk

Programowanie obiektowe

Tworzenie elementów graficznych

Prostokąt. AutoCAD pozwala na szybkie rysowanie figur o czterech bokach prostokątów. Do tego celu służy funkcja Prostokąt. Funkcję tą można wywołać:

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.

O czym należy pamiętać?

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

Programowanie komputerów Wykład 6: Aplety Java

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

STWORZENIE PRZYKŁADOWEJ

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

Rysowanie precyzyjne. Polecenie:

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

Kurs Adobe Photoshop Elements 11

Kontenery i komponenty graficzne

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

Rysowanie punktów na powierzchni graficznej

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

1. OPEN OFFICE RYSUNKI

Visual Studio instalacja

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

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

Wstęp Pierwsze kroki Pierwszy rysunek Podstawowe obiekty Współrzędne punktów Oglądanie rysunku...

INSTRUKCJA DO ĆWICZENIA 5

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2)

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

Aplikacje w środowisku Java

1. Prymitywy graficzne

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

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

AUTOCAD teoria i zadania z podstaw rysowania Rysowanie linii, prostej, półprostej, punktu, trasy, polilinii. Zadania geodezyjne.

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

Szybkie tworzenie grafiki w GcIde

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

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Obsługa mapy przy użyciu narzędzi nawigacji

PWŚG Ćwiczenia 13. Ukończoną pracę należy przesłać na adres lub

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Przypomnienie o klasach i obiektach

4. Rysowanie krzywych

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

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

AUTOCAD MIERZENIE I PODZIAŁ

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

Podstawy Swing. Tomasz Borzyszkowski

Graphic User Interfaces pakiet Swing

Pierwsza ramka. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 10

Multimedia i interfejsy. Ćwiczenie 5 HTML5

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

Java - interfejs graficzny

Bezpieczne uruchamianie apletów wg

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

Polecenie LUSTRO _MIRROR Lustro Pasek narzędzi: Menu: Klawiatura: UWAGA

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

Rysunek map Wstęp do AutoCada. Elżbieta Lewandowicz

W tej instrukcji zostanie opisany sposób w jaki tworzy się, edytuje i usuwa obiekty na mapie. Następnie wybierz Rysuj

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

Zakład Zarządzania Produkcją 2010 r. Materiały pomocnicze do zajęć laboratoryjnych z przedmiotu CAD

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

BSP_LCD_Clear(LCD_COLOR_WHITE); BSP_LCD_SetFont(&Font16); BSP_LCD_SetTextColor(LCD_COLOR_BLACK);

Podstawy programowania GUI niskiego poziomu. APLETY.

Janusz Ganczarski. OpenGL Pierwszy program

Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach

Wykład 4: Klasy i Metody

TWORZENIE SZEŚCIANU. Sześcian to trójwymiarowa bryła, w której każdy z sześciu boków jest kwadratem. Sześcian

4.2. ELIPSA. 1. W linii statusowej włączamy siatkę i skok, które ułatwią rysowanie:

Podstawy Informatyki Wykład V

2 Przygotował: mgr inż. Maciej Lasota

Ćwiczenie pochodzi ze strony

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

2. Korzystając z ikony Warstwy stwórz nowe warstwy według podanego schematu:

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

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

Dziedziczenie. Zadanie 1

C Biblioteka G2. C.1 Koncepcja biblioteki G2.

Przewodnik po obszarze roboczym

Podstawy programowania obiektowego

AutoCAD laboratorium 3

Rozdział 4 KLASY, OBIEKTY, METODY

CorelDraw - wbudowane obiekty wektorowe - prostokąty Rysowanie prostokątów

4.3 WITRAś. 1. UŜywając polecenia Linia (_Line) narysować odcinek, podając jako punkt początkowy współrzędną 90,-300 i punkt końcowy 90,55.

TWORZENIE OBIEKTÓW GRAFICZNYCH

Aplikacja wielowątkowa prosty komunikator

Programowanie komputerowe. Zajęcia 7

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Tworzenie i obsługa graficznego interfejsu uŝytkownika

b) Dorysuj na warstwie pierwszej (1) ramkę oraz tabelkę (bez wymiarów) na warstwie piątej (5) według podanego poniżej wzoru:

LABORATORIUM 7 Cel: 1_1

Transkrypt:

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI Opracował: mgr inż. Przemysław Pardel, dr hab. Bogdan Kwolek v1.01 2010 Grafika i komunikacja człowiek komputer Laboratorium Część 2: Graphics ZAGADNIENIA DO ZREALIZOWANIA (2H) 1. Rysowanie i wypełnianie obszarów... 2 3.1 Linie... 2 Przykład 1 do zrealizowania... 2 3.2 Prostokąty... 2 Przykład 2 do zrealizowania... 2 Przykład 3 do zrealizowania... 3 3.3 Wielokąty... 4 Przykład 3 do zrealizowania... 5 3.4 Elipsy... 5 Przykład 4 do zrealizowania... 5 3.5 Łuki... 6 Przykład 4 do zrealizowania... 7 Przykład 5 do zrealizowania... 8 3.6 Kopiowanie i usuwanie... 10

1. RYSOWANIE I WYPEŁNIANIE OBSZARÓW Dla wielu rysowanych elementów dostępne są dwa rodzaje metod: metody rysujące, przy użyciu których można nakreślić obrys danego elementu, metody wypełniające, za pomocą których można wypełnić wnętrze danego elementu żądanym kolorem. Obydwa rodzaje metod rysują obrys elementu przy użyciu bieżącego koloru. 3.1 LINIE Do rysowania linii pomiędzy dwoma punktami służy metoda drawline(). Pobiera ona cztery parametry: współrzędne x, y początku linii współrzędne x, y końca linii. Zademonstrowano to na poniższym przykładzie: drawline(x1, y1, x2, y2); Wykonanie powyższego polecenia spowoduje narysowanie linii od punktu o współrzędnych (x1, y1) do punktu o współrzędnych (x2, y2). Szerokość linii jest ustawiona na 1 piksel. PRZYKŁAD 1 DO ZREALIZOWANIA import java.awt.graphics; public class MyLine extends java.applet.applet { public void paint(graphics g) { g.drawline(15,25,65,75); 3.2 PROSTOKĄTY Klasa Graphics udostępnia metody do rysowania prostokątów normalnych" oraz prostokątów z zaokrąglonymi narożnikami. Obydwa rodzaje prostokątów mogą być narysowane jako puste (tylko obrys prostokąta) oraz jako wypełnione żądanym kolorem. Aby narysować normalny" prostokąt, należy użyć metody drawrect() do prostokątów pustych" oraz fillrect() do prostokątów wypełnionych kolorem. Obydwie metody pobierają cztery parametry: współrzędne (x, y) lewego, górnego narożnika prostokąta, szerokość prostokąta, wysokość prostokąta. PRZYKŁAD 2 DO ZREALIZOWANIA

import java.awt.graphics; public class MyRect extends java.applet.applet { public void paint(graphics g) { g.drawrect(20,20,60,60); g.fillrect(120,20,60,60); Prostokąty z zaokrąglonymi narożnikami wymagają użycia metod drawroundrect() lub fillroundrect(). Oprócz czterech parametrów, pobierają one dwa parametry dodatkowe. Określają one wysokość i szerokość obszaru, w którym znajdują się zaokrąglone narożniki. Im większy jest taki obszar, tym bardziej będą zaokrąglone narożniki prostokąta. Dobierając odpowiednio duże obszary zaokrągleń, można nawet spowodować, że prostokąt będzie wyglądał jak okrąg. Na rysunku 1 przedstawiono kilka przykładów prostokątów z zaokrąglonymi narożnikami. W pierwszym przypadku obszar zaokrąglenia ma wymiary 5x5 pikseli, w drugim 30x10 pikseli, a w trzecim 20x20, co powoduje, że ostatni prostokąt wygląda niemal jak okrąg. Rysunek 1: Kilka przykładów prostokątów z zaokrąglonymi narożnikami PRZYKŁAD 3 DO ZREALIZOWANIA import java.awt.graphics; public class MyRRect extends java.applet.applet { public void paint(graphics g) { g.drawroundrect(20,20,60,60,10,10);

g.fillroundrect(120,20,60,60,20,20); 3.3 WIELOKĄTY Wielokąty mogą być rysowane przy użyciu metod drawpolygon() lub fillpolygon(). Aby narysować wielokąt, należy wyznaczyć współrzędne (x, y) każdego jego wierzchołka. Wielokąt może być traktowany jako seria połączonych ze sobą linii. Pierwsza linia jest rysowana od punktu A do punktu B, następnie punkt B staje się początkiem następnej linii itd. Poszczególne współrzędne mogą być podawane na dwa sposoby: jako para tablic liczb całkowitych, z których pierwsza przechowuje współrzędne x, a druga współrzędne y, jako obiekt Polygon, tworzony na podstawie pary tablic liczb całkowitych, z których pierwsza przechowuje współrzędne x, a druga współrzędne y. Drugi z podanych sposobów jest bardziej elastyczny, ponieważ nowe punkty mogą być dodawane do definicji wielokąta, zanim zostanie on narysowany. Aby narysować wielokąt, oprócz współrzędnych x, y poszczególnych wierzchołków należy podać liczbę wierzchołków. Dzięki temu nie będzie możliwe zdefiniowanie większej liczby par współrzędnych niż wierzchołków ani więcej wierzchołków niż par współrzędnych w każdym z tych przypadków kompilator Java wyświetli błąd. Aby utworzyć obiekt Polygon, należy w pierwszej kolejności przy pomocy polecenia new Polygon() utworzyć pusty wielokąt, tak jak w poniższym przykładzie: Polygon poly = new Poligon(); Alternatywnym rozwiązaniem może być utworzenie wielokąta na podstawie serii współrzędnych jego wierzchołków przechowywanych w tablicach liczb całkowitych. Wymaga to wywołania konstruktora Polygon(int[], int[], int), którego parametry to tablica współrzędnych x, tablica współrzędnych y oraz całkowita liczba wierzchołków. Poniżej przedstawiono przykład zastosowania tego konstruktora: int x[] = {10, 20, 30, 40, 50; int y[] = {15, 25, 35, 45, 55; int points = x.length; Polygon poly = new Polygon(x, y, points): Po utworzeniu obiektu Polygon można dodawać do niego nowe wierzchołki poprzez wywołanie na jego rzecz metody addpoint(). Jako parametry pobiera ona współrzędne (x, y) nowego wierzchołka i dodaje je do definicji wielokąta. Zobrazowano to poniżej: poly.addpoint(60, 65);

Po zakończeniu definiowania wierzchołków wielokąta można go narysować wywołując jedną z metod drawpolygon() lub fillpolygon(). Zarówno pierwsza, jak i druga z nich, pobiera tylko jeden parametr, mianowicie obiekt Polygon: comp2d.drawpolygon(poly); Jeżeli używamy metody drawpolygon() to możemy zamknąć wielokąt, podając dla ostatniego wierzchołka takie same współrzędne jak dla wierzchołka pierwszego, w przeciwnym wypadku wielokąt pozostanie otwarty. Metoda fillpolygon() automatycznie domyka rysowany wielokąt bez konieczności jawnego podawania współrzędnych zamykającego wierzchołka. W stosunku do wersji Java 1.0 zachowanie metody drawpolygon() radykalnie się zmieniło. W wersji Java 2 metoda drawpolygon() automatycznie domyka wielokąt w ten sam sposób jak robi to metoda fillpolygon(). Jeżeli chcemy uzyskać wielokąt otwarty, to należy skorzystać z metody drawpolyline(). PRZYKŁAD 3 DO ZREALIZOWANIA import java.awt.graphics; public class MyPoly extends java.applet.applet { public void paint(graphics g) { int exes[] = { 39,94,97,142,53,58,26 ; int whys[] = { 33,74,36,70,108,80,106 ; int pts = exes.length; g.drawpolygon(exes,whys,pts); g.fillpolygon(poly);!!! 3.4 ELIPSY Do rysowaniu elips i okręgów służą metody drawoval() oraz filloval(). Obydwie metody pobierają cztery parametry: współrzędne x, y elipsy, wysokość i szerokość elipsy (inaczej mówiąc średnice elipsy) w przypadku okręgów obydwa parametry mają identyczne wartości. Elipsy są traktowane dokładnie tak samo jak prostokąty. Współrzędne (x, y) odnoszą się do lewego, górnego narożnika obszaru zajmowanego przez elipsę. PRZYKŁAD 4 DO ZREALIZOWANIA import java.awt.graphics; public class MyOval extends java.applet.applet {

public void paint(graphics g) { g.drawoval(20,20,60,60); g.filloval(120,20,100,60); 3.5 ŁUKI Ze wszystkich operacji graficznych to właśnie rysowanie łuków jest najbardziej skomplikowanym zagadnieniem. Łuk jest w zasadzie fragmentem elipsy, stąd w języku Java łuki zostały po prostu zaimplementowane jako częściowo narysowane elipsy. Do rysowania łuków służą metody drawarc() oraz fillarc(), które pobierają sześć parametrów: współrzędne x, y elipsy, wysokość i szerokość elipsy, kąt, od którego rozpoczynamy rysowanie łuku (kąt początkowy), długość" łuku (w stopniach). Pierwsze cztery parametry są identyczne jak w przypadku elips i działają dokładnie w ten sam sposób. Kąt początkowy łuku jest liczony od 0 do 359 w kierunku przeciwnym do ruchu wskazówek zegara. Posługując się skalą godzinową, kąt 0 odpowiada godzinie 3:00; 90 godzinie 12:00; 180 godzinie 9:00, a 270 godzinie 6:00. Długość" łuku jest mierzona od 0 do 359 w kierunku przeciwnym do ruchu wskazówek zegara i od 0 do -359 w kierunku zgodnym z ruchem wskazówek zegara. Rysunek 2 ilustruje sposób wyliczania dwóch ostatnich parametrów. Rysunek 2. Wyliczanie długości łuku Łuki wypełnione są rysowane w ten sposób, jakby były częściami tortu o odpowiednich wymiarach. Zamykanie takiego łuku odbywa się nie przez dorysowanie cięciwy, ale dwóch linii prostych biegnących ze skrajnych punktów łuku do centralnego punktu elipsy, na której łuk jest oparty. Poniżej przedstawiono przykład wywołania metody drawarc(): comp2d.drawarc(20. 25. 315, 150. 5. -190);

Wykonanie powyższego polecenia spowoduje narysowanie łuku w miejscu o współrzędnych 20, 25, długości elipsy 315 pikseli, szerokości elipsy 150 pikseli. Łuk posiada kąt początkowy ustawiony na 5 i długość 190 zgodnie z ruchem wskazówek zegara. PRZYKŁAD 4 DO ZREALIZOWANIA import java.awt.*; public class Lamp extends java.applet.applet { public void paint(graphics g) { g.fillrect(0,250,290,290); g.drawline(125,250,125,160); g.drawline(175,250,175,160); g.drawarc(85,157,130,50,-65,312); g.drawarc(85,87,130,50,62,58); g.drawline(85,177,119,89); g.drawline(215,177,181,89); g.fillarc(78,120,40,40,63,-174); g.filloval(120,96,40,40); g.fillarc(173,100,40,40,110,180); Rysunek 3: Efekt działania klasy Lamp

PRZYKŁAD 5 DO ZREALIZOWANIA import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Map extends JFrame { public Map() { super("map"); setsize(350, 350); ExitWindow exit = new ExitWindow(); MapPane map = new MapPane(); getcontentpane().add(map); addwindowlistener(exit); public static void main(string[] arguments) { Map frame = new Map(); frame.show(); class MapPane extends JPanel { public void paintcomponent(graphics comp) { Graphics2D comp2d = (Graphics2D)comp; comp2d.drawstring("florida", 185, 75); comp2d.drawline(185, 80, 222, 80); comp2d.drawrect(2, 2, 335, 320); comp2d.drawroundrect(182, 61, 43, 24, 10, 8); int x[] = { 10, 234, 253, 261, 333, 326, 295, 259, 205, 211, 195, 191, 120, 94, 81, 12, 10 ; int y[] = {12,15, 25, 71, 209, 278, 310, 274, 188, 171, 174, 118, 56, 68, 49, 37, 12 ;

int pts = x.length; Polygon poly = new Polygon(x, y, pts); comp2d.drawpolygon(poly); comp2d.filloval(235,140,15,15); comp2d.filloval(225,130,15,15); comp2d.filloval(245,130,15,15); for (int ax = 50; ax < 150; ax += 10) for (int ay = 120; ay < 320 ; ay += 10) comp2d.drawarc(ax, ay, 10, 10, 0, -180); class ExitWindow extends WindowAdapter { public void windowclosing(windowevent e) { System.exit(0); Rysunek 4: Aplikacja Map.java

Przedstawiona na rysunku mapa jest znakomitym przykładem wykorzystania możliwości graficznych oferowanych przez metody klasy Graphics. 3.6 KOPIOWANIE I USUWANIE Klasa Graphics udostępnia pewne możliwości typu wytnij-wklej: metoda copyarea() kopiuje prostokątny obszar okna w inne miejsce tego okna, metoda clearrect() kasuje (czyści) prostokątny obszar okna. Metoda copyarea() pobiera sześć argumentów: współrzędne x, y prostokątnego obszaru, który będzie kopiowany, szerokość i wysokość tego obszaru, odległości w pionie oraz w poziomie mierzone w pikselach, które określają przesunięcie kopiowanego obszaru od pozycji początkowej. Poniższe polecenie kopiuje obszar o rozmiarze 100x100 pikseli od miejsca położonego o 50 pikseli na prawo i 25 pikseli w dół od pozycji początkowej. Polecenie to, wykorzystuje obiekt klasy Graphics o nazwie screen: screen.copyarea(0, 0, 100, 100, 50, 25); //zrealizować w przykładzie Map.java (Patrz Rysunek 5) Metoda clearrect() posiada cztery identyczne parametry, podobnie jak to miało miejsce w przypadku metod drawrect() i fillrect(). Wypełnia ona obszar prostokątny, określony podanymi wartościami, bieżącym kolorem tła danego okna. Jeżeli chcemy wyczyścić cały obszar okna, to do określenia jego rozmiarów możemy wykorzystać metodę size(). Zwraca ona obiekt klasy Dimension, którego wartości zmiennych width oraz height reprezentują bieżące rozmiary okna apletu (odpowiednio szerokość i wysokość) i możemy je wykorzystać bezpośrednio w wywołaniu metody clearrect(), tak jak to przedstawiono na poniższym przykładzie: screen.clearrect(0, 0, getsize().width. getsize().height); Rysunek 5: Aplikacja Map.java ze skopiowanym fragmentem