Canvas & Paint

황제낙엽 2018.07.24 04:13 조회 수 : 29

sitelink1 https://m.blog.naver.com/elisa0511/221012692036 
sitelink2  
sitelink3  

먼저 Canvas와 Paint가 무엇인지 살펴 보자. 

 

Canvas는 도화지 같은 역할로 점,선,원, 사각형 그리기 / 텍스트 쓰기 / 이미지 출력 등을 할 수 있다. 

Paint는 그림을 그리는 방법으로 펜 두께 지정/ 색상 선택 / 스타일 선택 등을 할 수 있다. 

 

Canvas 그리기

5가지 step을 통해서 구현한다. 

 

➔ View 클래스를 상속받는 Class 구현

➔ OnDraw() 메소드 overriding

➔ Paint 객체 생성하고 Canvas 그리기

➔ onTouchEvent() 메소드 구현

➔ 액티비티 추가

 

이에 따른 코드는 아래 기제한 github 주소에서 찾아 보도록 하자. 

 

Bitmap그리기

비트맵이란 컴퓨터 분야에서 디지털 이미지를 저장하는 데 쓰이는 이미지 파일 포맷 또는 메모리 저장 방식의 한 형태이다. 

 

BitmapFactory 클래스를 이용하여 비트맵 이미지를 생성한다. 

Bitmap을 만들고 나서 그림이 너무 크다면 createSacleBitmap()메소드를 사용하여서 줄일 수도 있다. 

 

 

그리기 요소 변환 / 이미지 효과

캔버스의 원하는 그리기 요소를 회전,이동,확대, 기울기를 할 수 있다. 

rotate/ trans / scale / skew 

 

Blurring 효과와 colorfilter 효과도 낼 수 있다.

 

 

더블 버퍼링

더블 버퍼링이란 화면에 그려 줄 출력버퍼를 2개를 만드는 것이다. 두개중 하나는 화면에 출력해주고 다른 하나는 다음에 출력될 화면을 그리는 것이다. 

순서는 

 

➔ View 클래스를 상속받는 클래스 생성

➔ member 변수 선언 (Bitmap, Canvas, Paint)

➔ onSizeChanged() 메소드 에서 Bitmap 객체 생성

➔ onDraw()에서 Bitmap을 화면에 그린다

➔ onTouchEvent에서 선을 그린다.

 

위 내용을 활용해서 자신만의 메모장을 만들어보자! 

 

관련된 코드는 https://github.com/chaelinlee/Canvas_hw/tree/master/app/src/main/java/com/example/leechaelin/week12_canvashw 

에서 확인 하실 수 있습니다!

 

1.jpeg

 

2.jpeg

 

번호 제목 글쓴이 날짜 조회 수
38 모바일 디바이스에서 알림을 띄우는 방식 황제낙엽 2023.11.04 1
37 여러대의 맥에서 하나의 앱 개발하기 file 황제낙엽 2022.09.17 0
36 Galaxy Z Fold3 5G Specifications 황제낙엽 2022.03.07 101
35 cell phone rotate (vertical, horizon, portrait, landscape) 황제낙엽 2021.04.14 11
34 피들러(Fiddler)를 이용하여 모바일 네트웍 감시 file 황제낙엽 2020.02.24 732
33 UIWebView, WKWebView 황제낙엽 2019.11.01 84
32 모바일웹 SMS 황제낙엽 2019.09.28 239
31 안드로이드 모바일 브라우저 캐시 지우기 황제낙엽 2019.07.23 87
30 AsyncTask 황제낙엽 2019.03.25 55
29 [모바일 브라우저] Android 기기 원격 디버깅 시작하기 (PC크롬에서 모바일크롬 디버깅) file 황제낙엽 2019.01.14 125
28 TTS 이용하기 (구글, 네이버, KT) file 황제낙엽 2018.11.01 1001
27 음성합성(이하 TTS)관련 사양조사 및 시장조사 file 황제낙엽 2018.11.01 419
» Canvas & Paint file 황제낙엽 2018.07.24 29
25 Bluetooth Connection을 사용하는 멀티플랫폼 앱 개발기 황제낙엽 2018.06.25 53
24 원격 데스크톱 환경을 위한 터치에 대한 제스쳐 목록 정의 황제낙엽 2018.06.12 239
23 팬(Pan), 스와이프(Swipe), 스크롤(Scroll), 플릭(Flick) file 황제낙엽 2017.09.11 629
22 Swift 와 Kotlin 황제낙엽 2017.07.29 77
21 위치정보(GeoLocation)에서 위도와 경도로 두 지점간 거리(distance) 구하는 오라클 Function 황제낙엽 2017.01.25 249
20 [Mysql] 위도 경도를 이용해 특정 거리안에 위치(거리) 구하기 황제낙엽 2017.01.25 357
19 [Android] / 안드로이드 / googlemap distance / 구글맵 두 위치 사이의 거리 구하기 황제낙엽 2017.01.23 97