Modernās Programmēšanas Tehnoloģijas (Advanced Programming Technologies) Edgars Celms, Mārtiņš Opmanis Latvijas Universitātes Matemātikas.

Slides:



Advertisements
Similar presentations
2D Graphics Drawing Things. Graphics In your GUI, you might want to draw graphics E.g. draw lines, circles, shapes, draw strings etc The Graphics class.
Advertisements

Graphics You draw on a Graphics object The Graphics object cannot directly be created by your code, instead one is generated when the method paintComponent.
Graphics Chapter 16.  If you want to draw shapes such as a bar chart, a clock, or a stop sign, how do you do it?
Graphics Programming. Introduction GOAL: Build the Indexer Client Event-driven vs. Sequential programs Terminology – Top-level windows are called “frame.
Zhang & Liang, Computer Graphics Using Java 2D and 3D (c) 2007 Pearson Education, Inc. All rights reserved. 1 Chapter 2 2D Graphics: Basics.
Chapter 9 Color, Sound and Graphics
Graphics CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
Georgia Institute of Technology Drawing in Java – part 2 Barb Ericson Georgia Institute of Technology September 2005.
CSC1401 Drawing in Java - 2. Reminder from last class How do you save your modified picture? String filename = …; Picture stevePicture = new Picture(filename);
Draw Shapes Introduction to simple graphics. What is a graphics context? An instance of the Graphics class Graphics is ABSTRACT! You can extend Graphics.
Java Graphics Section 1 - Multi-File Graphics Programs Section 2 - The Coordinate System and Graphics Context g Section 3 - The Java Drawing and Painting.
1 Graphics -- Introduction zThe use of graphics is common among modern software systems  Java has strong API support for graphics in the java.awt (abstract.
GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.
Graphics in Java Part II. Lecture Objectives Learn how to use Graphics in Java.
1 L36 Graphics and Java 2D™ (1). 2 OBJECTIVES  To understand graphics contexts and graphics objects.  To understand and be able to manipulate colors.
1 Chapter 15 l Basic Figures l Colors l Fonts and Other Text Details Graphics Objects.
 2000 Prentice Hall, Inc. All rights reserved. Chapter 28 - Java Graphics and Java2D Outline 28.1Introduction 28.2Graphics Contexts and Graphics Objects.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Topics  Applets  Classes used for graphics Graphics Point Dimension.
1 L37 Graphics and Java 2D™ (2). 2 OBJECTIVES To use methods of class Graphics to draw lines,  rectangles,  rectangles with rounded corners,  three-dimensional.
May 11, 1998CS102-02Lecture 7-1 More Graphics in Java CS Lecture 7-1 A picture's worth a thousand words.
 2005 Pearson Education, Inc. All rights reserved Graphics and Java 2D™
1 L38 Graphics and Java 2D™ (3). 2 OBJECTIVES In this chapter you will learn:  To understand graphics contexts and graphics objects.  To understand.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Chapter 5 Java Graphics Applets.
Swing Graphics ● Empty Swing containers have no visual appearance except for a background color ● Every JComponent must have a paintComponent method that.
Drawing pictures with Java. JFrame: the basic Java window The swing package contains classes, objects and methods that can be used to create a consistent.
CS324e - Elements of Graphics and Visualization Java2D Graphics.
Chapter 16: Graphics. Objectives Learn about the paint() and repaint() methods Use the drawString() method to draw String s using various fonts and colors.
Java Software Solutions Lewis and Loftus Chapter 7 1 Copyright 1997 by John Lewis and William Loftus. All rights reserved. Graphics -- Introduction The.
1 Graphical User Components (II) Outline JTextArea Creating a Customized Subclass of JPanel JPanel Subclass that Handles Its Own Events Windows: Additional.
(C) 2010 Pearson Education, Inc. All rights reserved. Omer Boyaci.
2D Graphics: Rendering Details
Chapter 15 Graphics and Java 2D™ Java How to Program, 8/e (C) 2010 Pearson Education, Inc. All rights reserved.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Chapter 28 - Java Graphics and Java2D Outline 28.1Introduction.
Chapter 28 - Java Graphics and Java2D Outline 28.1Introduction 28.2Graphics Contexts and Graphics Objects 28.3Color Control 28.4Font Control 28.5Drawing.
 Pearson Education, Inc. All rights reserved. 1 Ch 12 Graphics and Java 2D In this chapter you will learn:  To understand graphics contexts.
T U T O R I A L  2009 Pearson Education, Inc. All rights reserved CheckWriter Application Introducing Graphics and Printing.
Java Graphics Swing Graphics
Graphics and Java 2D. 2 Introduction Java’s graphics capabilities –Drawing 2D shapes –Controlling colors –Controlling fonts Java 2D API –More sophisticated.
Chapter 15Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 15 l Basic Figures l Colors l Fonts and Other Text Details.
Chapter 7 Graphics. © Daly and Wrigley Objectives Use Graphic Components: ▫ Strings ▫ Lines ▫ Rectangles ▫ Ovals ▫ Arcs Change the color and font of elements.
Graphics & Java 2D Drawing Two Dimensional Shapes Controlling Fonts Controlling Colors.
Graphics Copyright © 2015 by Maria Litvin, Gary Litvin, and Skylight Publishing. All rights reserved. Java Methods Object-Oriented Programming and Data.
1 Chapter 3 2D Graphics: Rendering Details  Color spaces, paints stroke types  Affine transforms including translation, rotation, scaling, shearing,
 2000 Prentice Hall, Inc. All rights reserved. Chapter 11 - Graphics and Java2D Outline 11.1Introduction 11.2Graphics Contexts and Graphics Objects 11.3Color.
(C) 2010 Pearson Education, Inc. All rights reserved.  Class Graphics (from package java.awt) provides various methods for drawing text and shapes onto.
Merete S COLLEGEFACULTY OF ENGINEERING & SCIENCE Graphics ikt403 – Object-Oriented Software Development.
Introduction to Java Chapter 8 - Introduction to Java Graphics1 Chapter 8 Introduction to Java Graphics.
Painting (Chapter 12) Java Certification Study Group January 25, 1999 Mark Roth.
Creating Graphics in Java CSE301 University of Sunderland Harry R Erwin, PhD.
Chapter 2: Graphics In Java Basics of classes –instance variables –methods –overriding methods Graphics class (drawing routines) Other classes –Color –Font.
Graphics and Java2D Chapter Java Coordinate System Origin is in _____________ corner –Behind title bar of window X values increase to the ________.
1 Drawing C Sc 335 Object-Oriented Programming and Design Rick Mercer.
Getting Started with GUI Programming Chapter 10 CSCI 1302.
6.1 Coordinates The screen of a computer is a grid of little squares called pixels. The color of each pixel can be set individually, and drawing on the.
10/20/2005week71 Graphics, mouse and mouse motion events, KeyEvent Agenda Classes in AWT for graphics Example java programs –Graphics –Mouse events –Mouse.
Graphics Drawing Things With Java. Today's Topics Course Updates Java Graphics –Java 1.1 versus Java 1.2 (Java 2) Drawing Lines Drawing Shapes.
Java Graphics and Java2D
Intro to Graphics from Chapter 2 of Java Software Solutions
12 Graphics and Java 2D™.
Chapter 8 Graphics.
Graphics Chapter 6 Copyright © 2000 W. W. Norton & Company.
Java Graphics CS 2511.
JAVA 2 Design and programming of GUI
Chapter 10 Graphics.
4.14 GUI and Graphics Case Study: Creating Simple Drawings (Cont.)
Graphics -- Introduction
12 Graphics and Java 2D™.
Chapter 8 Graphics.
Presentation transcript:

Modernās Programmēšanas Tehnoloģijas (Advanced Programming Technologies) Edgars Celms, Mārtiņš Opmanis Latvijas Universitātes Matemātikas un informātikas institūts 2007, Rīga, Latvija

Grafiskās iespējas valodā Java “Java™ How to Program, Sixth Edition”  Chapter 12. Graphics and Java 2D Grafiskie objekti valodā Java. Klases Color lietojums. Klases Font lietojums. Klases Graphics lietojums līniju, taisnstūru, ovālu, loku un lauztu līniju zīmēšanā. Klases Graphics2D lietojums dažādu grafisku figūru zīmēšanā. Paint un Stroke lietojums klases Graphics2D figūrām.

Grafika – ievads I Valodā Java ir iebūvēts atbalsts dažādām grafiskām darbībām ar kurām var vizuāli papildināt lietojumprogrammas Virkne paplašinātu grafisku darbību atbalsts ir iekļauts Java 2D API Biežāk lietotās klases  Graphics  Color  Font, FontMetrics  Graphics2D  Polygon  BasicStroke  GradientPaint, TexturePaint  Dažādas Java 2D figūru klases

Grafika – ievads II Biežāk lietoto klašu hierarhija [Piezīme: Klase Object iekļauta tāpēc, ka tā ir Javas klašu hierarhijas virsklase]

Grafika – ievads III Java coordinate system  Upper-left corner of a GUI component has the coordinates (0, 0)  Contains x-coordinate (horizontal coordinate) - horizontal distance moving right from the left of the screen  Contains y-coordinate (vertical coordinate) - vertical distance moving down from the top of the screen Coordinate units are measured in pixels. A pixel is a display monitor’s smallest unit of resolution. Different display monitors have different resolutions (i.e., the density of the pixels varies). This can cause graphics to appear to be different sizes on different monitors or on the same monitor with different settings.

Klases Graphics un Color A Java graphics context enables drawing on the screen Class Graphics  Manages a graphics context and draws pixels on the screen  An abstract class – contributes to Java’s portability Method paintComponent  Used to draw graphics  Member of class JComponent, subclass of Component  Graphics object passed to paintComponent by the system when a lightweight Swing component needs to be repainted  If programmer needs to have paintComponent execute, a call is made to method repaint Class Color declares methods and constants for manipulating colors in a Java program Every color is created from a red, a green and a blue component – RGB values

Klases Graphics un Color Color methods and color-related Graphics methods. Color constants and their RGB values.

Method paintComponent paints JPanel Set current drawing color with method setColor Draw filled rectangle using current color Draw text value of current colorSet current drawing color, specify float arguments to Color constructor Set current drawing color using Color constant

Retrieving RGB values using methods getRed, getGreen and getBlue

Dažas piezīmes I (Software Engineering Observation) Everyone perceives colors differently. Choose your colors carefully to ensure that your application is readable. Try to avoid using many different colors in close proximity. To change the color, you must create a new Color object (or use one of the predeclared Color constants). Like String objects, Color objects are immutable (not modifiable).

Krāsu vadība JColorChooser GUI component enables application users to select colors  Method showDialog creates a JColorChooser object, attaches it to a dialog box and displays the dialog  Modal dialog  Allows the user to select a color from a variety of color swatches  Tabs – Swatches, HSB and RGB

Import JColorChooser class

Krāsu vadība Display JColorChooser dialog Reference to parent component Title bar text Initial selected color Change background color of JPanel

Select a color from one of the color swatches. Sliders to select the red, green and blue color components

Fontu vadība Class Font  Constructor takes three arguments – the font name, font style and font size Font name – any font currently supported by the system on which the program is running Font style – Font.PLAIN, Font.ITALIC or Font.BOLD. Font styles can be used in combination Font sizes – measured in points. A point is 1/72 of an inch.  Methods getName, getStyle and getSize retrieve information about Font object  Graphics methods getFont and setFont retrieve and set the current font, respectively To change the font, you must create a new Font object. Font objects are immutable – class Font has no set methods to change the characteristics of the current font. The number of fonts varies greatly across systems. Java provides five logical font names – Serif, Monospaced, SansSerif, Dialog and DialogInput – that can be used on all Java platforms. The Java runtime environment (JRE) on each platform maps these logical font names to actual fonts installed on the platform. The actual fonts used may vary by platform.

Fontu vadība

Creating Font objects Font nameFont style Font size

Fontu vadība Combining styles Retrieve font name and size of Graphics object’s current Font

Fontu vadība – metrika (metrics) Font class methods  getFamily – returns name of font family to which the current font belongs  isPlain, isBold, isItalic – used to determine font style Font metrics – precise information about a font  Height  Descent – amount a character dips below the baseline  Ascent – amount a character rises above the baseline  Leading – the interline spacing  Class FontMetrics declares several methods for obtaining font metrics

Fontu vadība – metrika (metrics) Retrieve FontMetrics object of current Font Retrieve font metric values

Fontu vadība – metrika (metrics)

Līniju, taisnstūru un ovālu zīmēšana Graphics methods for drawing lines, rectangles and ovals  fillRoundRect and drawRoundRect – draw rectangles with rounded corners  bounding rectangle – the area in which a rounded rectangle or oval will be drawn  draw3DRect and fill3DRect – draw a 3D rectangle that is either raised or lowered  drawOval and fillOval – draw ovals

Līniju, taisnstūru un ovālu zīmēšana Graphics methods that draw lines, rectangles and ovals. (Part 1 of 2)

Līniju, taisnstūru un ovālu zīmēšana Graphics methods that draw lines, rectangles and ovals. (Part 2 of 2)

Līniju, taisnstūru un ovālu zīmēšana Draw a straight lineDraw an empty rectangleDraw a filled rectangle

Līniju, taisnstūru un ovālu zīmēšana Draw a filled rectangle with rounded cornersDraw an empty rectangle with rounded cornersDraw an empty rectangle that is raisedDraw a filled rectangle that is loweredDraw an empty ovalDraw a filled oval

Līniju, taisnstūru un ovālu zīmēšana

fillRoundRect drawRoundRect drawOval fillOval drawLine drawRect fillRect draw3DRect fill3DRect Arc width and arc height for rounded rectangles Oval bounded by a rectangle

Loku zīmēšana An arc is drawn as a portion of an oval Arcs sweep (i.e., move along a curve) from a starting angle by the number of degrees specified by their arc angle  Counterclockwise sweep measured in positive degrees  Clockwise sweep measured in negative degrees Graphics methods drawArc and fillArc are used to draw arcs Positive and negative arc angles

Loku zīmēšana x- and y-coordinates for upper left corner of bounding rectangle Width and height of bounding rectangle Starting angle Sweep angle Draw empty arcs

Loku zīmēšana Draw filled arcs Negative values indicate arc should sweep clockwise

Loku zīmēšana

Daudzstūru un lauztu līniju zīmēšana (Polygons and Polylines) Polygons  Closed multisided shapes composed of straight line segments  Graphics methods drawPolygon and fillPolygon to display polygons  Polygons can be represented using class Polygon – class contains method addPoint to add points to a Polygon Polylines  Sequences of connected points  Graphics method drawPolyline to display polylines

Daudzstūru un lauztu līniju zīmēšana Graphics methods for polygons and class Polygon methods

Daudzstūru un lauztu līniju zīmēšana Create Polygon object from sets of x- and y-coordinates Draw an empty Polygon Draw polyline from sets of x- and y-coordinates

Daudzstūru un lauztu līniju zīmēšana Draw polygon from sets of x- and y-coordinates, without creating Polygon object Add coordinates to Polygon with method addPoint

Daudzstūru un lauztu līniju zīmēšana Result of line 28 Result of line 37 Result of line 23 Result of line 18

Populārākās programmēšanas kļūdas I (Common Programming Error) An ArrayIndexOutOfBoundsException is thrown if the number of points specified in the third argument to method drawPolygon or method fillPolygon is greater than the number of elements in the arrays of coordinates that specify the polygon to display.

Java 2D API Provides advanced two-dimensional graphics capabilities for detailed and complex graphical manipulations Features for processing line art, text and images Accomplished with Graphics2D class Java 2D shapes specified with double-precision floating-point values – Line2D.Double, Rectangle2D.Double, RoundRectangle2D.Double, Arc2D.Double, Ellipse2D.Double

Java 2D API Painting with Graphics2D object  Method setPaint – sets color for Graphics2D object when shapes are drawn as Paint object  Paint object can be a predeclared Color object, or an instance of GradientPaint, SystemColor or TexturePaint classes  GradientPaint used for drawing with a gradient – gradients can be cyclic or acyclic  TexturePaint used for painting by replicating a stored image Graphics2D method fill used to draw a filled Shape object – an object that implements interface Shape Graphics2D method draw used to draw a Shape object Setting stroke of a line or border  Graphics2D method setStroke – requires argument that implements interface Stroke  BasicStroke class – can specify width of line, end caps, line joins Arc2D.Double constants  Arc2D.PIE – arc should be closed by two lines – one from starting point to center, one from center to ending point  Arc2D.CHORD – draws a line from the starting point to the ending point  Arc2D.OPEN – arc should not be closed

Java 2D API Java 2D API shape classes Creating Graphics2D reference

Java 2D API Set Graphics2D object to draw using a gradient from blue to yellow Draw ellipse filled using gradient Set width of border to 10 pixels Create image to be used for TexturePaint object

Java 2D API Create TexturePaint object from image Draw rounded rectangle, filled with repeating image Draw arc using white border, 6 pixels wide Draw solid green lineSet stroke to use dashes Draw dashed yellow line

Java 2D API

Klase GeneralPath A general path is a shape constructed from straight lines and complex curves Class GeneralPath  Method moveTo specifies the first point in a general path  Method lineTo draws a line to the next point in the path  Method closePath completes the general path Graphics2D method translate – used to move the drawing origin Graphics2D method rotate – used to rotate the next displayed shape

Klase GeneralPath Set starting point of GeneralPath object Create GeneralPath object

Klase GeneralPath Add lines of general pathDraw line from last point to first pointRotate approximately 18 degreesDraw star at current angle around origin

Klase GeneralPath

Jautājumi ?