Chapter 8: Getting Started with Graphics Programming

Slides:



Advertisements
Liknande presentationer
Händelsehantering i grafiska gränssnitt byggda med Tkinter
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
1 Windows programmering (2) Borland C++ Builder 4/5 Modsoft Ab Kent Westerholm.
II130V Konstruktion av webbsidor Välkommen till föreläsning 3 September 2007.
Klassarv och inkapsling
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
Metoder i java Det finns två typer av metoder i java
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Swing Grafik delen i Java kallas för Swing. Swing är stort; ca 800 klasser i 16 paket. Swing är en utveckling av AWT (Abstarct Window Toolkit). AWT var.
Programkodens uppbyggnad
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Webbteknik lektion 2 Det handlar om stilmallar Per K, 2012.
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
1 Föreläsning 8 Grafik AWT. 2 Grafik Frame använder man för att skapa ett fönster Button använder man om man vill ha en knapp att trycka på Canvas är.
i olika programmeringsspråk
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Klasser och objekt Klasser, objekt och instansvariabler
Next previous Grafik: 2D-geometri. Något om dubbelbuffring. Java: 2D, awt & Swing. Föreläsning 3 Innehåll 2D-transformationer Mer om 2D-grafik i Java Något.
Föreläsning 15 (16) Introduktion till Swing. Historik (java.awt) JDK 1.0 – AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
1 Objektorienterad programmering i Java Föreläsning 5 Kort om Java-Applets.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
2I1073 Lektion 1 KTH-MI Peter Mozelius XHTML, stilmallar och Javascript.
CSS del 1 Kvarnbrink I början… Bakgrunden var det enda man kunde byta färg på Allt var satt i Times Texten flödade över hela webbläsarfönstrets.
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Knappar och rutor. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 System.ComponentModel System.Windows.Forms.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP del III–vecka 15 Mer NetBeans MouseEvent Graphics Threads TIJ Chapter 14 Menus sid Drawing File Dialogs
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP del III– Föreläsning vecka 9 GUI Containers och LayoutManagers (Inner classes)
Föreläsning 7 Metoder Parametrar Klassmetod.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
OOP&M - teori1 OOP&M del III– Föreläsning 3 vecka 6 Kontrollkomponenter (Components) Som Applets.
1-1 Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1-1 Programmering 7.5 hp Programmering är... creativ, fascinerande, roligt,
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
OOP&M - teori1 OOP&M del III– Föreläsning 23 vecka 15 Graphics Graphics2D Menyer JMF.
OOP&M - teori1 OOP del III– Vecka 10 Händelser Kontrollkomponenter (Components) Featuring: Applets.
DA7351 Programmering 1 Skapa och placera en komponent i en container Layoutmanagers Applet Händelser och lyssnare Föreläsning 15.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Föreläsning 14: Grafik & mera händelsehantering
Föreläsning 13: Swing (GUI), händelser, timer
Föreläsning 5: Att använda klasser & objekt
Presentationens avskrift:

Chapter 8: Getting Started with Graphics Programming AWT Class Hierarchy Frames The relationship between frame and other UI components Event-Driven Programming Event Source, Listener, Listener Interface Layout Managers FlowLayout, GridLayout, BorderLayout Panels Canvases repaint()and paint() Drawing Geometric Figures Color, Font classes Drawing methods

AWT Class Hierarchy

Det grafiska användargränssnittet (java.awt) I paketet java.awt finns mycket av det grafiska användargränssnittet samlat. Bl.a. finner du följande klasser: Button En vanlig knapp. Canvas En yta man kan rita på Checkbox En radiobutton eller checkbox Choice En popup-meny ur vilken man kan välja

Det grafiska användargränssnittet java.awt Frame Ett fönster i vilket man kan placera andra komponenter Label En rad med text List En lista ur vilken man kan välja Panel En komponent i vilken man kan placera andra komponenter. En Applet är en Panel. TextArea Ett fönster i vilket användaren kan skriva in text. TextField Ett enradigt fönster i vilket användaren kan skriva in text.

Metoder i Frame setBackground(Color) Bakgrundsfärg på fönstret. setBounds(x,y,bredd,höjd) Fönstrets placering och storlek på bildskärmen. Kan ersättas med setLocation + setSize. setLocation(x,y) Fönstrets placering på bildskärmen. setSize(bredd,höjd) Fönstrets storlek på bildskärmen. setTitle("Titel") Fönstrets titel setResizable(false) Anger om fönstret kan minimeras/maximeras setVisible(true / false) Gör fönstret synligt / osynligt

Frames import java.awt.*; public class MyFrame { public static void main(String[] args) Frame f = new Frame("Test Frame"); f.setSize(400,300); f.setVisible(true); } Run

Graphics Graphics Coordinate System Drawing Lines Drawing Rectangles Font and Color Drawing Lines Drawing Rectangles Drawing Ovals Drawing Arcs Drawing Polygons

Grafiskt program Ett javaprogram är antingen en fristående applikation eller en Applet (körs normalt i en browser). Första fönstret i en applikation är ofta av typen Frame. En Frame är bl.a. en Container i vilken olika komponenter, som t.ex. Buttons och Labels, kan placeras. Eftersom ett fönster av typen Frame inte kan stängas så kommer vi att använda fönstret ExtendedFrame (extra-paketet). ExtendedFrame ärver Frame.

Applikation class MittProgram extends Frame { //Deklaration av instansvariabler, t.ex komponenter //Inställningar av fönstret i konstruktorn public MittProgram() { } //paint-metoden anropas när fönstret behöver //ritas om public void paint(Graphics g) {

paint() repaint() paint-metoden anropas av systemet när Framen / Appleten behöver ritas om. Grafikverktyg bifogas anropet. Om man vill rita en linje gör man anropet g.drawLine(x1,y1,x2,y2); Om man på egen hand vill se till att allt ritas om så kan man anropa repaint- metoden. public void repaint() repaint() anropas när man önskar att Framen / appleten ska ritas om. Om man inte vill att allt ska ritas om så kan man anropa metoden repaint(x,y,bredd,höjd); varvid endast angiven rektangel uppdateras.

Klassen Color Klassen Color används för att beskriva färger i Java. Systemet som används är RGB. Det finns 13 fördefinierade färger: Color.black, Color.blue, Color.cyan, Color.darkGray, Color.gray, Color.green, Color.lightGray, Color.magenta, Color.orange, Color.pink, Color.red, Color.white, Color.yellow Om man önskar en annan färg deklarerar man ett färgobjekt och använder konstruktorn Color(int r, int g, int b) där r (röd), g (grön) och b (blå) är värden i intervallet 0-255.

Klassen Color Exempel Color färg = new Color(200,64,118); : g.setColor(färg); Color slumpfärg = new Color( (int)(Math.random()*256), (int)(Math.random()*256), (int)(Math.random()*256)); g.setColor(slumpfärg);

Colors Color c = new Color(r, g, b); Example: r, g, and b specify a color by its red, green, and blue components. Example: Color c = new Color(128, 100, 100);

Setting Colors You can use the following methods to set the component’s background and foreground colors: setBackground(Color c) setForeground(Color c) Example: setBackground(Color.yellow); setForeground(Color.red);

Klassen Font Klassen Font används för att beskriva typsnitt i Java. Fördefinierade typsnitt är bl.a.: MonoSpaced, SansSerif och Serif - i det nya versionen av java är: Times Roman - Courier - Helvetica - Dialog - Symbol Varje gång man ska ändra Font så behöver man ett nytt Font-objekt. Font font = new Font(”Serif”, Font.PLAIN, 18); : g.setFont(font); Ovanstående kod sätter aktuell Font till en liknande Times New Roman, normal stil och 18 punkter stor. Det är möjligt att göra anropet utan ett Font-objekt. Då gör man så här: g.setFont(new Font(”Serif”, Font.PLAIN, 18)); Man skapar Font-objektet samtidigt som man gör anropet.

Fonts Example: Font myFont = Font(name, style, size); Font myFont = new Font("TimesRoman", Font.BOLD, 16); Font myFont = new Font("Courier", Font.BOLD+Font.ITALIC, 12);

Font Example FontExample Run public void paint(Graphics g) { Font myFont = new Font("Times", Font.BOLD, 16); g.setFont(myFont); g.drawString("Welcome to Java", 20, 40); //set a new font g.setFont(new Font("Courier", Font.BOLD+Font.ITALIC, 12)); g.drawString("Welcome to Java", 20, 70); } FontExample Run

Bildskärmen och pixlar Bildskärmen är uppbyggd av ett rutnät. Varje ruta i nätet kallas för en pixel. Pixlarna är nummrerade från vänster till höger och uppifrån och ner. I båda riktningarna börjar numreringen på noll. Detta skiljer från matematiken där y-axeln växer uppåt.

Klassen Graphics När paint-metoden anropas av systemet så bigfogas grafikverktyg för att rita på aktuell Frame / Applet.

Några intressanta grafikanrop i Graphics Metoder som börjar med draw ger en ofylld figur och de som börjar med fill ger en fylld figur (fylld med aktuell färg)

Några intressanta grafikanrop i Graphics drawLine(x1,y1,x2,y2) Ritar en linje mellan punkterna (x1;y1) och (x2;y2). drawOval(x,y,bredd,höjd) fillOval(x,y,bredd,höjd) Ritar en ellips inom angiven rektangel. drawRect(x,y,bredd,höjd) fillRect(x,y,bredd,höjd) Ritar angiven rektangel.

Några intressanta grafikanrop i Graphics drawString(text,x,y) Skriver texten i angiven position clearRect(x,y,bredd,höjd) Fyller angiven rektangel med bakgrundsfärgen. drawRoundRect(x,y,bredd,höjd,bågbredd,båghöjd) fillRoundRect(x,y,bredd,höjd,bågbredd,båghöjd) Ritar angiven rektangel med avrundade hörn. drawArc(x,y,bredd,höjd, vinkel, antalGrader) fillArc(x,y,bredd,höjd, vinkel, antalGrader) Ritar en båge från startvinkel antalGrader lång. startvinkel=0 => kl 3, startvinkel=90 => kl 12

Några intressanta grafikanrop i Graphics setColor(Color) Anger den färg som ska användas vid grafikanrop setFont(Font) Anger den Font som ska användas vid drawString

Graphics Coordinate System

Drawing Lines drawLine(x1, y1, x2, y2);

Drawing Rectangles drawRect(x, y, w, h); fillRect(x, y, w, h);

Drawing Rounded Rectangles drawRoundRect(x, y, w, h, aw, ah); fillRoundRect(x, y, w, h, aw, ah);

Drawing Ovals drawOval(x, y, w, h); fillOval(x, y, w, h);

Drawing Arcs drawArc(x, y, w, h, angle1, angle2); fillArc(x, y, w, h, angle1, angle2);

Drawing Polygons int x[] = {40, 70, 60, 45, 20}; int y[] = {20, 40, 80, 45, 60}; g.drawPolygon(x, y, x.length); g.fillPolygon(x, y, x.length);

Example EnBildTest Run Run

Example TestEllipser Run

Example EnkelAnimeringTest Run

Example EnkelAnimering2Test Run