41
Page 1 Copyright© 1993-2012 Hanbit Media, Inc. All rights reserved. IT CookBook, - - . : , , , : , , , , ( ) : , , [ 강강강강 강강 강강 ] . 136 5 5 ( ) .

09. 그래픽과 이미지

  • Upload
    aizza

  • View
    140

  • Download
    0

Embed Size (px)

DESCRIPTION

09. 그래픽과 이미지. 캔버스에 도형을 그리는 방법을 배운다 . 이미지 파일을 처리하는 방식을 학습한다 . 영상처리 앱을 작성해 본다. 1. 그래픽 ▶ 캔버스와 페인트 기본. 개요 (1/2) 화면에 도형을 그릴 때 사용되는 클래스는 Canvas 클래스와 Paint 클래스 대표적인 android.graphics.Canvas 클래스의 점을 찍는 메소드의 원형. 1. 그래픽 ▶ 캔버스와 페인트 기본. 개요 (2/2) 그래픽을 표현할 때는 View 클래스를 재정의하는 형태가 많이 사용. - PowerPoint PPT Presentation

Citation preview

Page 1: 09.  그래픽과 이미지

Page 1 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

IT CookBook, 안드로이드 프로그래밍

본 강의교안은 수업상황을 도입 - 전개 - 마무리로 구분하여 수업의 각 단계에서 필요한 요소 중 강의교안으로 커버할 수 있는 영역을 기준으로 작성되었습니다 .

• 도입 : 수업준비 , 전시학습 , 동기유발 , 학습목표• 전개 : 학습안내제공 , 정보제시 , 연습기회제공 , 수행유도 , 중간점검 ( 피드백 )• 마무리 : 정리 , 형성평가 , 다음 차시 안내

[ 강의교안 이용 안내 ]

• 본 강의교안의 저작권은 한빛미디어㈜에 있습니다 . • 이 자료를 무단으로 전제하거나 배포할 경우 저작권법 136 조에 의거하여 최고 5 년 이하의 징역 또는 5 천만원 이하의 벌금에 처할 수 있고 이를 병과 ( 倂科 ) 할 수도 있습니다 .

Page 2: 09.  그래픽과 이미지

IT CookBook, 안드로이드 프로그래밍

Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

09. 그래픽과 이미지

Page 3: 09.  그래픽과 이미지

Page 3

학습목표

Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

• 캔버스에 도형을 그리는 방법을 배운다 .

• 이미지 파일을 처리하는 방식을 학습한다 .

• 영상처리 앱을 작성해 본다 .

Page 4: 09.  그래픽과 이미지

Page 4

차례

Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Page 5: 09.  그래픽과 이미지

Page 5 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

1. 그래픽 ▶ 캔버스와 페인트 기본

개요 (1/2) 화면에 도형을 그릴 때 사용되는 클래스는 Canvas 클래스와 Paint

클래스

대표적인 android.graphics.Canvas 클래스의 점을 찍는 메소드의 원형

Page 6: 09.  그래픽과 이미지

Page 6 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

1. 그래픽 ▶ 캔버스와 페인트 기본

개요 (2/2) 그래픽을 표현할 때는 View 클래스를 재정의하는 형태가 많이 사용

Page 7: 09.  그래픽과 이미지

Page 7 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

1. 그래픽 ▶ 그래픽 처리 기본

기본 예제 (1/2)

이 부분에 그려질 내용을 코딩

Page 8: 09.  그래픽과 이미지

Page 8 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

1. 그래픽 ▶ 그래픽 처리 기본

기본 예제 (2/2)

Page 9: 09.  그래픽과 이미지

Page 9 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

그림과 같은 화면을 출력하도록 다음 메소드를 사용해 Java 를 코딩해보자 . Paint.setStrokeCap()

Canvas.drawOval()

Paint.setColor(Color.argb())

[ 직접 풀어보기 9-1]

1. 그래픽 ▶ 그래픽 처리 기본

Page 10: 09.  그래픽과 이미지

Page 10 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

1. 그래픽 ▶ 터치 이벤트

개요 화면에 생성한 뷰를 터치하면 Touch 이벤트가 발생 손가락으로 그림을 그릴려면 터치 이벤트를 활용해야 한다 . 터치를 구현하려면 View 클래스의 onTouchEvent( ) 메소드를

오버라이드해서 코딩

Page 11: 09.  그래픽과 이미지

Page 11 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

1. 그래픽 ▶ 터치 이벤트

터치 이벤트의 일반적인 사용 형태

Page 12: 09.  그래픽과 이미지

Page 12 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

[ 실습 9-1] 간단 그림판 만들기 (1/6)

화면을 손가락으로 터치 , 드래그해서 선 또는 원을 그리는 간단한 앱을 작성하자 . 선을 그릴지 , 원을 그릴지는 옵션메뉴로 선택하도록 작성한다 .

프로젝트 정보 프로젝트 이름 : Project9_1 패키지 이름 : com.cookandroid.project9_1 빌드 SDK : Goolge API 15 또는 16 Minimum Required SDK : API 15 또는 16 액티비티이름 : Project9_1Activity 레이아웃 이름 : main 타이틀 : Project9_1

1. 그래픽

Page 13: 09.  그래픽과 이미지

Page 13 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

화면 디자인 이번 프로젝트는 Java 코드로만 작성됨 . main.xml 은 필요 없으므로 삭제해도 됨 .

[ 실습 9-1] 간단 그림판 만들기 (2/6)

1. 그래픽

Page 14: 09.  그래픽과 이미지

Page 14 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 1 View 클래스의 상속을 받는 MyGraphicView 클래스를 만든다 .

[ 실습 9-1] 간단 그림판 만들기 (3/6)

1. 그래픽

Page 15: 09.  그래픽과 이미지

Page 15 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 2 : 옵션 메뉴 작성 선 그리기 , 원 그리기 2 개의 옵션 메뉴를 생성 메뉴 클릭시 curShape 변수에 선택한 전역상수를 대입 onCreateOptionsMenu( ) 와

onOptionsItemSelected( ) 를 자동완성

[ 실습 9-1] 간단 그림판 만들기 (4/6)

1. 그래픽

Page 16: 09.  그래픽과 이미지

Page 16 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 3 : MyGraphicView 클래스에 터치와 관련된 메소드를 완성

MyGraphicView 의 전역변수 시작 x, 시작 y, 끝 x, 끝 y 및 반지름 변수를 선언 onTouchEvent( ) 를 자동완성하고 코딩

[ 실습 9-1] 간단 그림판 만들기 (5/6)

1. 그래픽

Page 17: 09.  그래픽과 이미지

Page 17 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 4 : onDraw( ) 메소드를 완성 페인트에 선의 두께 , 채우기 여부 , 선의 색상을 지정 switch( )~case 문으로 메뉴에서 선택한 내용에 따라 선 또는 원을 그린다

[ 실습 9-1] 간단 그림판 만들기 (6/6)

1. 그래픽

Page 18: 09.  그래픽과 이미지

Page 18 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

[ 실습 9-1] 을 다음과 같이 수정한다 . 클릭한 두 점을 끝점으로 하는 사각형이

추가로 그려지도록 한다 . 색상을 옵션 메뉴에서 선택되도록 한다 .

색상은 서브 메뉴로 나오게 하고 , 빨강 , 초록 , 파랑 3 가지만 사용한다 .

[ 직접 풀어보기 9-2]

1. 그래픽

Page 19: 09.  그래픽과 이미지

Page 19 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 비트맵 기본

개요 (1/2) Bitmap 클래스는 캔버스에 이미지를 보여주기 위해서 사용 /res/drawable 폴더에 있는 이미지 파일을 보여주는 onDraw( )

메소드

Page 20: 09.  그래픽과 이미지

Page 20 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 비트맵 기본

개요 (2/2) SD 카드의 이미지 파일을 보여주는 onDraw( ) 메소드

이미지를 화면 중앙에 출력하기 위한 방법

Page 21: 09.  그래픽과 이미지

Page 21 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 비트맵 기본

기본 예제

Page 22: 09.  그래픽과 이미지

Page 22 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 이미지의 기하학적 변환

이미지의 기하학적 변환 개요 Canvas 클래스의 기하학적 메소드

회전 : rotate() 이동 : translate() 확대 / 축소 : scale() 기울이기 : skew()

Page 23: 09.  그래픽과 이미지

Page 23 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 이미지의 기하학적 변환

이미지의 기하학적 변환 예제

Page 24: 09.  그래픽과 이미지

Page 24 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 이미지 활용

블러링 개요 이미지를 뿌옇게 하는 효과 BlurMaskFilter 클래스를 제공 BlurMaskFilter( 반지름 , 스타

일 );

NORMAL INNER OUTER SOLID

Page 25: 09.  그래픽과 이미지

Page 25 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 이미지 활용

블러링 예제

Page 26: 09.  그래픽과 이미지

Page 26 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 이미지 활용

엠보싱 개요 이미지가 볼록하게 튀어나와 보이는 효과 EmbosMaskFilter 클래스를 제공 EmbossMaskFilter( 빛의

xyz 방향 1 차 배열 , 빛의 밝기 , 반사 계수 , 블러링 크기 );

빛 방향 {3, 3, 3} 빛 방향 {10, 3, 3} 빛 방향 {3, 10, 3} 빛 방향 {3, 3, 10}

Page 27: 09.  그래픽과 이미지

Page 27 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 이미지 활용

엠보싱 예제

Page 28: 09.  그래픽과 이미지

Page 28 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 이미지 활용

컬러매트릭스 개요 색상이나 밝기를 조절하기 위한 ColorMatrix 클래스 ,

ColorMatrixColorFilter 클래스의 일반적인 사용 형태

ColorMatrix 에 사용할 배열 (Array) 의 각 위치의 값

Page 29: 09.  그래픽과 이미지

Page 29 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

2. 이미지 ▶ 이미지 활용

컬러매트릭스 예제

Page 30: 09.  그래픽과 이미지

Page 30 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

[ 실습 9-2] 미니 포토샵 만들기 (1/9)

포토샵과 비슷한 기능을 하는 간단한 앱을 작성한다 . 아이콘을 사용해 화면을 깔끔하게 처리한다 ..

프로젝트 정보 프로젝트 이름 : Project9_2 패키지 이름 : com.cookandroid.project9_2 빌드 SDK : Goolge API 15 또는 16 Minimum Required SDK : API 15 또는 16 액티비티이름 : Project9_2Activity 레이아웃 이름 : main 타이틀 : Project9_2

2. 이미지

Page 31: 09.  그래픽과 이미지

Page 31 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

화면 디자인 1 확대 , 축소 , 회전 , 밝게하기 , 어둡게하기 , 회색 영상 등 6 개 아이콘으로 사용할

그림 파일과 앱의 제목 왼쪽 아이콘으로 사용할 그림 , 화면에 출력할 그림 파일을 /res/drawable-hdpi 에 복사한다 .

AndroidManifest.xml 파일을 열고 아이콘으로 사용할 그림 파일의 id 로 변경 .

main.xml 수정 바깥 리니어레이아웃 안에 2 개의 리니어레이아웃 생성한다 . 두 리니어레이아웃의 layout_weight 는 1:9 정도로 설정한다 . 위쪽 리니어레이아웃에 이미지 버튼 6 개를 생성한다 . 위젯의 id 를 다음과 같이 선언한다 .

• 리니어레이아웃 : iconLayout, pictureLayout

• 이미지버튼 : ibZoomin, ibZoomout, ibRotate, ibBright, ibDark, ibGray

[ 실습 9-2] 미니 포토샵 만들기 (2/9)

2. 이미지

Page 32: 09.  그래픽과 이미지

Page 32 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

화면 디자인 2

[ 실습 9-2] 미니 포토샵 만들기 (3/9)

2. 이미지

Page 33: 09.  그래픽과 이미지

Page 33 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 1-1 이미지 버튼에 대응할 6 개 위젯 변수를 선언한다 . MyGraphicView 클래스 변수를 선언한다 . MyGraphicView 정의 : 그림 파일을 중앙에 비트맵으로 출력한다 . pictureLayout 을 인플레이트한 후 MyGraphicView 를 추가한다 .

[ 실습 9-2] 미니 포토샵 만들기 (4/9)

2. 이미지

Page 34: 09.  그래픽과 이미지

Page 34 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 1-2

[ 실습 9-2] 미니 포토샵 만들기 (5/9)

2. 이미지

Page 35: 09.  그래픽과 이미지

Page 35 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 2 : 확대 아이콘 축척에 사용될 전역변수를 선언 clickIcons( ) 메소드를 정의하고 확대 아이콘 클릭 리스너를 생성 clickIcons( ) 메소드를 호출 onDraw( ) 에 Cavas.scale( ) 메소드를 추가

[ 실습 9-2] 미니 포토샵 만들기 (6/9)

2. 이미지

Page 36: 09.  그래픽과 이미지

Page 36 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 3 : 회전 아이콘 회전에 사용될 전역변수를 선언 회전 아이콘 클릭 리스너를 생성 onDraw( ) 에 Cavas.rotate( ) 메소드를 추가

[ 실습 9-2] 미니 포토샵 만들기 (7/9)

2. 이미지

Page 37: 09.  그래픽과 이미지

Page 37 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

[ 실습 9-2] 미니 포토샵 만들기 (8/9)

Java 코딩 4 : 밝게하기 아이콘 화면 밝기에 사용될 전역변수를 선언 / 밝게하기 아이콘 클릭 리스너를 생성 onDraw( ) 에 컬러 매트릭스를 적용

2. 이미지

Page 38: 09.  그래픽과 이미지

Page 38 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

Java 코딩 5 : 회색영상 아이콘 채도에 사용될 전역변수를 선언 / 회색 영상 아이콘 클릭 리스너를 생성 onDraw( ) 에 채도 설정을 적용

[ 실습 9-2] 미니 포토샵 만들기 (9/9)

2. 이미지

Page 39: 09.  그래픽과 이미지

Page 39 Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

[ 실습 9-2] 를 다음과 같이 수정한다 . 회색 영상 버튼을 없앤다 . 밝게하기를 클릭하면 채도가 증가하고 ,

어둡게하기를 클릭하면 채도가 감소하도록 코드를 수정한다 .

블러링 , 엠보싱 아이콘도 추가하고 코딩한다 . 클릭하면 블러링 또는 엠보싱 기능이 On/Off 되도록 한다 .

[ 직접 풀어보기 9-3]

1. 그래픽

Page 40: 09.  그래픽과 이미지

Page 40

핵심정리

Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.

1. 화면에 도형을 그릴 때 사용되는 클래스는 Canvas 와 Paint 다 . 캔버스와 페인트의 개념은 도화지와 붓에 비유할 수 있다 .

2. 대표적인 Paint 클래스의 메소드는 다음과 같다 .

Paint.setAntiAlias( ) → 도형의 끝부분을 부드럽게 처리해준다 .

Paint.setColor( ) → 색상을 지정한다 .

Paint.setStrokeWidth( ) → 도형 또는 글자 외곽선의 두께를 설정한다 .

3. Canvas 클래스의 기하학적 메소드에는 rotate( ), scale( ), translate( ), skew( ) 등이 있다 .

4. 안드로이드는 블러링 효과를 주기 위해서 BlurMaskFilter 클래스를 , 엠보싱 효과를 주기 위해서 EmbosMaskFilter 클래스를 , 색상이나 밝기를 조절하기 위해서 ColorMatrix 클래스와 ColorMatrixColorFilter 클래스를 , 채도 조절을 위해서 ColorMatirx.setSaturation( ) 메소드를 사용한다 .

Page 41: 09.  그래픽과 이미지

IT CookBook, 안드로이드 프로그래밍

Copyright© 1993-2012 Hanbit Media, Inc.All rights reserved.