8장.그래픽 프로그래밍

Similar documents
<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lecture11.ppt [호환 모드]

PowerPoint 프레젠테이션

05-class.key

Microsoft PowerPoint - lec04_05.ppt [호환 모드]

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 12장

그래픽 chapter.1 스윙컴포넌트그리기 컴포넌트는자신의모양을스스로그린다 X-window, MFC, C# GUI, Android 등 GUI 플랫폼에서 GUI 컴포넌트는스스로자신의모양을그린다. 자바의스윙도예외는아니다. JButton은버튼모양을그리는코드를내장하고, JCo

자바GUI실전프로그래밍2_장대원.PDF

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

PowerPoint Presentation

제8장 자바 GUI 프로그래밍 II

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint Presentation

(Microsoft PowerPoint - ETRSRHFRXNAM.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

슬라이드 1

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

Microsoft PowerPoint - VHDL02_full.ppt [호환 모드]

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

Cluster management software

9장.key

Cluster management software

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

gnu-lee-oop-kor-lec10-1-chap10

No Slide Title

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 14주차 강의자료

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

public class FlowLayoutPractice extends JFrame { public FlowLayoutPractice() { super("flowlayout Practice"); this. Container contentpane = getcontentp

Microsoft PowerPoint - Java-03.pptx

슬라이드 1

Design Issues

PowerPoint Presentation

Network Programming

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

rmi_박준용_final.PDF

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

4장.문장

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Java7.pptx

PowerPoint Template

02 C h a p t e r Java

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

비긴쿡-자바 00앞부속

슬라이드 1

Java ...

11장.key

PowerPoint Presentation

강의자료

PowerPoint 프레젠테이션

12-file.key

Microsoft PowerPoint - Lect04.pptx

슬라이드 1

10 이벤트 처리와 그래픽 프로그래밍.key

No Slide Title

Microsoft PowerPoint - 6-PythonGUI-sprite

Microsoft PowerPoint - 03-TCP Programming.ppt

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

오버라이딩 (Overriding)

제11장 프로세스와 쓰레드

슬라이드 1

PowerPoint Presentation

ThisJava ..

Microsoft PowerPoint - ÀÚ¹Ù08Àå-2.ppt

쉽게

PowerPoint Presentation

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint Presentation

PowerPoint 프레젠테이션

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

<4D F736F F F696E74202D203134C0E52EC0CCB9CCC1F620C3B3B8AE20B9D720C0A520BEEEC7C3B8AEC4C9C0CCBCC7C0C720B9E8C6F7205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint Presentation

Java Programing Environment

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

Microsoft PowerPoint PythonGUI-sprite

Microsoft PowerPoint - 06-Chapter09-Event.ppt

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

Microsoft PowerPoint - 05geometry.ppt

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

Transcription:

윈도우프레임 도형그리기색과폰트이미지그리기그리기응용 2

윈도우프레임 제목표시줄을갖는윈도우를의미 생성과정 1 JFrame 객체생성 2 프레임의크기설정 3 프레임의제목설정 4 기본닫힘연산지정 5 프레임이보이도록만듦. 3

윈도우프레임예제 [ 예제 8.1 - EmptyFrameViewer.java] import javax.swing.*; public class EmptyFrameViewer { public static void main(string[] args) { JFrame frame = new JFrame(); // 1 final int FRAME_WIDTH = 300; final int FRAME_HEIGHT = 400; frame.setsize(frame_width, FRAME_HEIGHT); frame.settitle("an Empty Frame"); frame.setdefaultcloseoperation(jframe.exit_on_close); // 2 // 3 // 4 frame.setvisible(true); // 5 4

그래픽객체 자바의그래픽기능을위해제공되는객체 java.awt.graphics 클래스의객체 선, 사각형, 타원, 호, 다각형등과같은도형을그리는데필요한기본적인메소드를가지고있음 JComponent 클래스의 paintcomponent() 메소드를재정의하여얻음화면을다시그려야할때, 자바에의해호출되는메소드 class UserDefinedComponent extends JComponent { public void paintcomponent(graphics g) { // 그래픽객체를이용한그리기작업 5

그리기과정 1 윈도우프레임을만듦 2 컴포넌트클래스의객체를생성 UserDefinedComponent component = new UserDefinedComponent(); 3 컴포넌트객체를윈도우프레임에추가 frame.add(component); 또는 frame.getcontentpane().add(component); 4 윈도우프레임을보이도록만듦 6

사각형그리기예제 [ 예제 8.2 - DrawingSchemeViewer.java] import java.awt.*; import javax.swing.*; class UserDefinedComponent extends JComponent { public void paintcomponent(graphics g) { g.drawrect(10, 20, 200, 150); public class DrawingSchemeViewer { public static void main(string[] args) { JFrame frame = new JFrame(); // 그리기를위한클래스 // 보여주기위한클래스 // 1 frame.setsize(320, 240); frame.settitle(" 사각형그리기 "); frame.setdefaultcloseoperation(jframe.exit_on_close); UserDefinedComponent component = new UserDefinedComponent(); // 2 frame.add(component); // 3 frame.setvisible(true); // 4 7

사각형그리기실행결과 8

형식 void drawline(start x, start y, end x, end y ) 예제 g.drawline(20, 20, 80, 80); g.drawline(70, 20, 40, 60); 9

종류 사각형, 둥근모서리사각형, 3차원사각형외각선만그리는 drawrect() 메소드채워진사격형을그리는 fillrect() 메소드 일반사각형그리기 형식 void drawrect(start x, start y, width, height) void fillrect(start x, start y, width, height) 예제 g.drawrect(20, 20, 50, 50); g.fillrect(80, 20, 50, 50); 10

둥근모서리사각형그리기 형식 void drawroundrect(start x, start y, w, h, arc_w, arc_h) void fillroundrect(start x, start y, w, h, arc_w, arc_h) 예제 g.drawroundrect(20, 20, 50, 50, 20, 20); g.fillroundrect(80, 20, 50, 50, 20, 20); 11

3 차원사각형그리기 형식 void draw3drect(start x, start y, width, height, raised) void fill3drect(start x, start y, width, height, raised) raised 값이 true 이면, 볼록한 3 차원사각형을그림 raised 값이 false 이면, 오목한 3 차원사각형을그림 예제 g.draw3drect(20, 20, 50, 50, true); g.fill3drect(80, 20, 50, 50, false); 12

원과타원그리기 drawoval() 메소드와 filloval() 메소드사각형을그리는매개변수와같음원을그리기위해서는정사각형의좌표값을줌타원을그리기위해서는직사각형의좌표값을줌 g.drawoval(20, 20, 50, 50); g.filloval(80, 20, 50, 80); 13

호그리기 drawarc() 메소드와 fillarc() 메소드 4개의매개변수는원이나타원을그리기위한매개변수값과같음 5번째매개변수는호를그리기위한시작각 6번째매개변수는호의중심각 g.drawarc(20, 20, 50, 50, 90, 180); g.fillarc(80, 20, 50, 80, 45, 90); 14

다각형그리기 각모서리점들의집합으로표현 형식 void drawpolygon(polygon p) void drawpolygon(int[] xpoints, int[] ypoints, int npoints) 예제 Polygon p = new Polygon(); p.addpoint (30, 30); p.addpoint (5, 50); p.addpoint (40, 75); p.addpoint (70, 20); p.addpoint (35, 10); g.drawpolygon(p); int[] xpnts = {90, 65, 100, 130, 95; int[] ypnts = {30, 50, 75, 20, 10; int npnts = xpnts.length; g.drawpolygon(xpnts, ypnts, npnts); 15

텍스트그리기 형식 void drawstring(string s, int x, int y) 예제 g.drawstring("java Graphic", 10, 10); 16

색 java.awt.color 패키지의 Color 클래스의객체를사용 RGB(Red/Green/Blue) 색상모델을사용 Color magenta = new Color(1.0F, 0.0F, 1.0F); 색을지정하기위해서는그래픽객체의 setcolor() 메소드를사용 Color 클래스의객체나 Color 클래스에서지원하는색상수 g.setcolor(color.magenta); 또는 g.setcolor(color.magenta); 17

폰트 글자의폰트를지정하기위해서는 java.awt 패키지에서제공하는 Font 클래스를사용생성자를통해폰트의종류와스타일, 그리고폰트크기를지정 폰트의종류 Helvetica, TimesRoman, Courier, Dialog, DialogInput, ZapfDingbats, default 폰트의스타일 Font.PLAIN, Font.ITALIC, Font.BOLD, Font.BOLD+Font.ITALIC 예제 Font f = new Font("TimesRoman", Font.BOLD+Font.ITALIC, 30); 그래픽객체의 setfont() 메소드를사용하여폰트를지정 18

[ 예제 8.3 - FontAndColorViewer.java] import java.awt.*; import javax.swing.*; class FontAndColorComponent extends JComponent { public void paintcomponent(graphics g) { Font fp = new Font("TimesRoman", Font.PLAIN, 17); Font fb = new Font("Helvetica", Font.BOLD, 17); Font fi = new Font("Courier", Font.ITALIC, 17); Font fbi = new Font("Dialog", Font.BOLD+Font.ITALIC, 17); g.setfont(fp); g.setcolor(color.black); g.drawstring("font:timesroman, Style:Plain, Color:Black", 10, 22); g.setfont(fb); g.setcolor(color.red); g.drawstring("font:helvetica, Style:Bold, Color:Red", 10, 44); g.setfont(fi); g.setcolor(color.blue); g.drawstring("font:courier, Style:Italic, Color:Blue", 10, 66); g.setfont(fbi); g.setcolor(color.green); g.drawstring("font:dialog, Style:Bold+Italic, Color:GREEN", 10, 88); 19

[ 예제 8.3 - FontAndColorViewer.java] (cont.) public class FontAndColorViewer { public static void main(string[] args) { JFrame frame = new JFrame(); frame.setsize(480, 270); frame.settitle("fontandcolor"); frame.setdefaultcloseoperation(jframe.exit_on_close); FontAndColorComponent component = new FontAndColorComponent(); frame.add(component); frame.setvisible(true); 20

실행결과 21

이미지읽기 javax.imageio 패키지에있는 ImageIO 클래스를이용 형식 static BufferedImage read(file input) static BufferedImage read(url input) 예제 try { Image img = ImageIO.read(new File("image.jpg")); // 이미지와관련된작업수행. catch (IOException e) { // IOException 에대한예외처리. 22

이미지그리기 형태 void drawimage(image img, int x, int y, ImageObserver observer) void drawimage(image img, int x, int y, int w, int h, ImageObserver observer) void drawimage(image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) 23

이미지를읽어오는클래스 [ 예제 8. 4 - DrawImageViewer.java] import java.awt.*; import java.awt.image.bufferedimage; import javax.swing.*; import java.io.*; import javax.imageio.imageio; class ImageDrawingComponent extends JComponent { public void paintcomponent(graphics g) { try { Image img; img = ImageIO.read(new File("image.jpg")); g.drawimage(img, 0, 0, null); catch (IOException e) { 24

읽어온이미지를그리는클래스 [ 예제 8. 4 - DrawImageViewer.java] (cont.) public class DrawImageViewer { public static void main(string[] args) { JFrame frame = new JFrame(); frame.setsize(320, 240); frame.settitle("drawimagetest"); frame.setdefaultcloseoperation(jframe.exit_on_close); ImageDrawingComponent component = new ImageDrawingComponent(); frame.add(component); frame.setvisible(true); 25

집그리기 예제 8.5: HouseViewer.java 26

집그리기예제 ( 주요그리기부분코드 ) [ 예제 8. 5 - HouseViewer.java] class HouseDrawingComponent extends JComponent { public void paintcomponent(graphics g) { // 단계 1: 지붕을그린다. int[] xpnts = {100, 50, 150, 100; int[] ypnts = {30, 180, 180, 30; int npnts = xpnts.length; g.fillpolygon(xpnts, ypnts, npnts); // 지붕위의기와모양을그린다. g.setcolor(color.white); g.drawarc(90, 50, 20, 40, 210, 120); g.drawarc(75, 87, 20, 40, 210, 120); g.drawarc(105, 87, 20, 40, 210, 120); g.drawarc(60, 125, 20, 40, 210, 120); g.drawarc(90, 125, 20, 40, 210, 120); g.drawarc(120, 125, 20, 40, 210, 120); 27

집그리기예제 ( 주요그리기부분코드 ) [ 예제 8. 5 - HouseViewer.java (cont.) // 단계 2: 몸체를그린다. g.setcolor(color.black); g.drawrect(60, 180, 80, 100); // 반원모양의창문을그린다. g.setcolor(color.yellow); g.fillarc(80, 195, 40, 85, 0, 180); // 노란색창문주위를 2 개의검은색선으로그린다. g.setcolor(color.black); g.drawarc(80, 195, 40, 85, 0, 180); g.drawarc(79, 195, 42, 86, 0, 180); g.drawline(79, 238, 120, 238); g.drawline(79, 239, 120, 239); 28

시계그리기 예제 8.6: ClockViewer.java 29

시계그리기예제 ( 주요그리기부분코드 ) [ 예제 8. 6 - ClockViewer.java] class ClockDrawingComponent extends JComponent { public void paintcomponent(graphics g) { Polygon hp = new Polygon(); Polygon mp = new Polygon(); // 시계바깥원 g.setcolor(color.red); g.filloval(20, 20, 150, 150); // 시계안쪽원 g.setcolor(color.yellow); g.filloval(40, 40, 110, 110); // 중심원 g.setcolor(color.black); g.filloval(92, 92, 6, 6); 30

시계그리기예제 ( 주요그리기부분코드 ) [ 예제 8. 6 - ClockViewer.java] (cont.) // 시침 hp.addpoint(92, 95); hp.addpoint(95, 55); hp.addpoint(98, 95); g.setcolor(color.blue); g.fillpolygon(hp); // 분침 mp.addpoint(95, 92); mp.addpoint(140, 95); mp.addpoint(95, 98); g.fillpolygon(mp); // 초침 g.setcolor(color.red); g.drawline(105, 85, 60, 120); 31