X. Grafische elementen



Vergelijkbare documenten
Graphics. Small Basic graphics 1/6


Zo vind u hierin de volgende documentatie over de klasse Applet: +----java.awt.panel java.applet.applet

sheets Programmeren 2 Java Recursie, de muis en graphics Walter Kosters

OEFENINGEN PYTHON REEKS 5

eerste voorbeelden in Java

Stel dat u 15 tellers nodig heeft. Dat kunt u een array van tellers als volgt declareren:

Imperatief Programmeren, derde deeltentamen (INFOIMP) 4 november 2005

Game of Life in Java

de deur de schoorsteen het dak dak aanpassen bloempot schoorsteen bakstenen verkleinen &verfraaien...

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Handleiding: Gebruikersinterface met Python

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

IMP Uitwerking week 13

HTML Graphics. Hans Roeyen V 3.0

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

NAAM: Programmeren 1 Examen 29/08/2012

mailgroep photoshop Copyright

OEFENINGEN PYTHON REEKS 4

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

1 Objectgeoriënteerd programmeren met Java

ICT. Meetkunde met GeoGebra. 2.7 deel 1 blz 78

Abstracte klassen & Interfaces

Informatica: C# WPO 8

Stap 1 Eenvoudig tekenprogramma maken In eerste instantie alleen 'freehand' curves Demo in de les

Informatica: C# WPO 4

Overerving & Polymorfisme

Voor het bepalen van de getalswaarde van een string is een standaardmethode beschikbaar: n = Integer.parseInt(s);

Programmeren in Java 3

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Vakgroep CW KAHO Sint-Lieven

Cursus KeyCreator. Oefening 18: Regelplaat

Labo 2 Programmeren II

SketchUp L D tekenen

Cursus KeyCreator. Oefening 13: Audiocassette

mailgroep photoshop Copyright Brandglas maken Vertaling van een lesje van:

Handleiding Paint 2003

8 Word Art Teksten. De documentatie van deze API is te lezen in Bijlage P: WordArt Documentatie.

Cursus KeyCreator. Tekenen van een ratel

In BlueJ. Doe onderstaande met muis/menu s:

Handleiding SpaceClaim

Foto s verkleinen en Foto s in elkaar over laten lopen

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

3. Tekentechnieken. Sommige symbolen zijn duidelijk, andere niet. Van links naar rechts staat het symbool (en de werkbalkknop) voor

Figuur 1: Kiezen van het Template in sketchup

Les11 Werken met vaste waarden

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Modelleren en Programmeren

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

GEOGEBRA 4. R. Van Nieuwenhuyze. Hoofdlector wiskunde, lerarenopleiding HUB, Brussel. Auteur Van Basis tot Limiet.

KLIK VOOR ELKE VOLGENDE DIA!!! COPYRIGHT & ONTWERP : RAYMOND BRIGEZ


werken met Ms Paint Vulemmer...3 Opties...3 Kleur selecteren...3 Vergroten...3 Potlood...3 Kwast...3 Spuitbus...4 Opties...4 Tekst...

VI. Klassen en objecten

Javascript oefenblad 1

Cursus KeyCreator. Oefening 3D: klemspanner Deel 1: onderdelen tekenen

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Figuur 1: Kiezen van het Template in sketchup

Lesje programmeren. Hallo allemaal, wat fijn dat je er bent. ROBOTICA

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele


Informatica: C# WPO 5

Nieuwe invoercellen voeg je toe door de cursor tussen twee cellen in te zetten, en invoer in te tikken.

OPDRACHTKAART. Thema: Prepress. Photoshop 2. Selecteren, verplaatsen en roteren PP Voorkennis: Introductie Photoshop (6.0) afgerond.

Tentamen in2705 Software Engineering

Workshop Sketchup & 3D printen

Informatie primaire cursus AutoCAD LT 2010

Een stoomcursus door Edgar de Graaf, november 2006

Enveloppe tekenen in Photoshop

Handig met getallen 4 (HMG4), onderdeel Meetkunde

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Herhalingsoefeningen

jaar Wiskundetoernooi Estafette n = 2016

NAAM: Programmeren 1 Examen 21/01/2011

Logo. De schildpad. Hoofdstuk 8 Grafische afbeeldingen met een schildpad

Informatica. JavaFX 11 R.M.M. Woudt

Creatief aan de slag met GeoGebra. Een tangram is een beroemde Chinese puzzel bestaande uit 7 puzzelstukjes: 1 vierkant, 1 parallellogram.

Vensterraam met sneeuw - PP 2007 (+/- hetzelfde voor 2010)

04. Werken met vormen en afbeeldingen

Het installatiepakket haal je af van de website

Les 11. Meetkundige begrippen. Lijnen. een gebogen lijn een gebroken lijn een rechte. Een rechte benoemen we met een kleine letter.

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Roc Zadkine. Javascript Car. Door: K.Bakker versie 1.0

Programmeren in Java les 3

Informatica: C# WPO 12

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Wat is de som van de getallen binnen een cirkel? Geef alle mogelijke sommen!

Door ir. Christine Daniels

Transcriptie:

X. Grafische elementen Om u te helpen bij grafische voorstellingen heeft java een aantal grafische afbeeldingen die u kunt gebruiken. Meestal worden zij in de methode paint(graphics g) geplaatst. Zij moeten worden toegepast op een grafisch object. De kleur van het element kunt u veranderen met de opdracht setcolor(color). De kleur kunt u op verschillende manieren invullen. setcolor(color.red): gebruik één van de standaardkleuren van java. setcolor(new Color(r,g,b)): genereer een nieuwe kleur met de rgb-kleurwaarden r, g en b resp. voor de kleuren rood, groen en blauw. Dit moeten waarden zijn tussen 0 en 255. 0 = niet aanwezig, 255 op volle sterkte. Color(0,0,0) is dus zwart, en Color(255,255,255) is wit. Hieronder volgen enkele voorbeeldjes. A. Lijnen tekenen Methode: drawline(x1,y1,x2,y2) Uitleg: x1,y1: coördinaten van het beginpunt x2,y2: coördinaten van het eindpunt Oefening: plaats onderstaande code in een nieuw bestand en probeer uit! /***************************** OefGraphics.java *****************************/ import java.awt.*; public class OefGraphics extends java.applet.applet public void paint(graphics g) g.setcolor(new Color(200,200,200)); g.fillrect(0,0,this.getsize().width,this.getsize().height); //driehoek met losse lijnen g.setcolor(color.red); g.drawline(30,20,50,40); g.drawline(50,40,10,40); g.drawline(10,40,30,20); Uitleg: g.setcolor(new Color(200,200,200)); Genereer een lichtgrijze kleur als achtergrond voor het applet. g.fillrect(0,0,this.getsize().width,this.getsize().height); Met de methode fillrect(x1,y1,x2,y2) wordt een rechthoek met top boven links (x1,y1) en hoekpunt rechtsonder (x2,y2) opgevuld met de huidige kleur. Inleiding tot Java door ir. C. Daniels 89

this.getsize().width,this.getsize().height De methode getsize() vraagt de afmetingen width, en height op over het huidig object, hier het applet. B. Rechthoeken Methode: drawrect(x1,y1,x2,y2) Tekent een lege rechthoek met top links x1,y1 en rechtsonder x2,y2. drawrect(x1,y1,x2,y2) Tekent een gevulde rechthoek met top links x1,y1 en rechtsonder x2,y2. g.drawrect(70,20,50,30); //lege rechthoek g.setcolor(color.red); //verander naar rood g.fillrect(130,20,50,30);//gevulde rechthoek C. Afgeronde rechthoeken Methode: drawroundrect(x1,y1,x2,y2,x3,y3) Tekent een afgeronde lege rechthoek met top links x1,y1 en rechtsonder x2,y2, en x3,y3 zijn de x- en y-waarde van de lengte van de afronding. Hoe groter deze waarde hoe groter de afronding. drawrect(x1,y1,x2,y2,x3,y3) Tekent een gevulde rechthoek met top links x1,y1 en rechtsonder x2,y2. en x3,y3 zijn de x- en y-waarde van de lengte van de afronding. g.drawroundrect(20,80,60,60,20,20); //afgeronde rechthoek g.setcolor(color.blue); //gebruik eens blauw g.fillroundrect(100,80,60,60,40,40);//opgevuld D. 3D-rechthoeken Deze rechthoeken geven een verheven of verdiept effect, maar zijn in de huidige versie van java, bijna niet te zien, omdat de lijndikte van de rand steeds maar één pixel is. Methode: draw3drect(x1,y1,x2,y2,boolean) Tekent een lege 3D-rechthoek met top links x1,y1 en rechtsonder x2,y2. boolean: true is verheven, false is verdiept. g.draw3drect(20,150,60,60,true); //3D rechthoek g.draw3drect(100,150,60,60,false); //moeilijk te zien.. Inleiding tot Java door ir. C. Daniels 90

E. Veelhoeken Om veelhoeken te tekenen, moet er eerst twee arrays worden aagemaakt met daarin de resp. de x-coördinaten en de y-coördinaten. Methode 1: Methode 2: drawpolygon( x[], y[], aantal) Tekent een lege veelhoek met x- en y-waarden in de arrays, x[] en y[] en met aantal gelijk aan het aantal hoekpunt. Polygon Veelh = new Polygon(xs,ys,punten) g.fillpolygon(veelh); Hier wort eerst een nieuw Polygon object gecreërd, en dan getekend. Met fillpolygon wordt een opgevulde veelhoek getekend. //Veelhoeken int x[]=20,45,40,90,30; int y[]=250,280,260,280,300; int punten=x.length; // de grootte van het array g.drawpolygon(x,y,punten); //andere methode om een veelhoek te tekenen g.setcolor(color.black); int xs[]=110,135,130,180,120; int ys[]=250,280,260,280,300; punten=xs.length; Polygon Veelh = new Polygon(xs,ys,punten); g.fillpolygon(veelh); F. Cirkels en Ovalen Cirkels en ovalen worden door dezelfde instructie getekend. Een cirkel is ook alleen mar een apart soort ovaal. Methode: drawoval(x,y,width,height) Tekent een lege ovaal met x,y: coördinaten van het punt links boven van de omschreven rechthoek Width, height: breedte en hoogte Methode: filloval(x,y,width,height) Tekent een gevulde ovaal met x,y: coördinaten van het punt links boven van de omschreven rechthoek Width, height: breedte en hoogte //ovalen g.drawoval(20,320,80,80); g.filloval(120,320,100,60); G. Bogen Een deel van een ovaal kan getekend worden met de opdrachten drawarc() en fillarc(). Inleiding tot Java door ir. C. Daniels 91

Methode: drawarc(x, y, width, height, starthoek, eindhoek) Tekent een open boog met x,y: coördinaten van het punt links boven van de omschreven rechthoek, width, height: breedte en hoogte van de omschreven rechthoek, en het beginpunt en eindpunt van de boog in graden. Methode: filloval(x, y, width, height, starthoek, eindhoek) Tekent een opgevulde boog met x,y: coördinaten van het punt links boven van de omschreven rechthoek, width, height: breedte en hoogte van de omschreven rechthoek, en het beginpunt en eindpunt van de boog in graden. //bogen g.drawarc(20,420,80,60,0,145); g.fillarc(120,420,80,60,0,145); H. Tekst Om tekst in een grafisch object te plaatsen moet eerst het font (lettertype) worden ingesteld door een nieuw of bestaand font te scheppen. Door de opdracht setfont() te gebruiken wordt dit font actief gemaakt. Met drawstrin() kunt u dan een tekst op het scherm afdrukken. Methode: drawstring(string,x,y) Schrijft een tekst in het ingesteld lettertypel met x,y de coördinaten van het punt links onder van het eerste karakter. Oefening: voeg onderstaande code bij in de methode paint() van het applet. //tekst Font f = new Font("TimesRoman",Font.PLAIN,18) g.setfont(f); g.drawstring("grafische oefening",20,480); Het volledige applet ziet er nu als volgt uit: Inleiding tot Java door ir. C. Daniels 92

Oefening: we ontwerpen een applet om cirkels te tekenen in een Canvas. We maken hiervan gebruik om nog een nieuwe interessante vorm van layout voor te stellen : de GridBagLayout. Deze layout verdeelt het applet in een rooster, horizontaal en verticaal. Door de GridBagConstarints in te stellen, kun je elk object in de layout een gewicht geven, zowel horizontaal als vertikaal. De layout probeert dan elk object de juiste afmetingen te geven. Het is interessant het applet is te vergroten of te verkleinen, driemaal zo breed als hoog bijvoorbeeld, of andersom. We proberen wat object-gericht te denken. Dus stoppen we de functionaliteit van het tekenen van de cirkels in een canvas, in een aparte klasse CirkelCanvas : /********************************* CirkelCanvas.java **********************************/ import java.awt.*; public class CirkelCanvas extends Canvas Color cirkelkleur; //bewaar de kleur van de cirkel //geef de kleur mee met de constructor public CirkelCanvas(Color kleur,string s) cirkelkleur=kleur; //teken de cirkel public void paint(graphics g) int cirkeldiameter, cirkelx, cirkely; Inleiding tot Java door ir. C. Daniels 93

Dimension Afmeting = getsize(); //zoek de kleinste van hoogte en breedte if (Afmeting.width < Afmeting.height) cirkeldiameter = Afmeting.width; else cirkeldiameter = Afmeting.height; //geef het canvas de juiste kleur g.setcolor(cirkelkleur); //Bereken de plaats van het middelpunt cirkelx =(Afmeting.width - cirkeldiameter)/2; cirkely =(Afmeting.height - cirkeldiameter)/2; //teken de cirkel g.filloval(cirkelx,cirkely,cirkeldiameter,cirkeldiameter); En hier is de code van het applet zelf : /****************************************** CirkelsApplet.java - Teken drie cirkels met een GridBagLayout ******************************************/ import java.awt.*; import java.applet.*; public class CirkelsApplet extends Applet public void init() //een nieuwe gridbag-layout GridBagLayout gridbag = new GridBagLayout(); //nieuwe constraints voor die layout GridBagConstraints constraints = new GridBagConstraints(); //een CirkelCanvas object CirkelCanvas Cirkel; //voeg de layout bij het applet setlayout(gridbag); //verdeel de ruimte voor het object constraints.weightx=1.0; constraints.weighty=1.0; //pas zowel de breedte als de hoogte aan indien nodig constraints.fill = GridBagConstraints.BOTH; //een nieuwe rode cirkel Cirkel = new CirkelCanvas(Color.red); gridbag.setconstraints(cirkel,constraints); Inleiding tot Java door ir. C. Daniels 94

add(cirkel); //tweede cirkel is tweemaal zo groot constraints.weightx=2.0; constraints.weighty=2.0; //kleur deze groen Cirkel = new CirkelCanvas(Color.green); gridbag.setconstraints(cirkel,constraints); add(cirkel); //derde cirkel is driemaal zo groot constraints.weightx=3.0; constraints.weighty=3.0; //kleur de derde cirkel blauw Cirkel = new CirkelCanvas(Color.blue); gridbag.setconstraints(cirkel,constraints); add(cirkel); //geef rondom 20 pixels ruimte public Insets insets() return new Insets(20,20,20,20); Laat de code met de insets eens weg, en vergelijk. Inleiding tot Java door ir. C. Daniels 95