POST

[안드로이드] 코틀린 View 그림그리기 - onDraw

View에는 텍스트 뿐만 아니라 도형도 그릴수 있다. 먼저 도형을 그릴때 Paint를 사용 하는데 사용하는 프로퍼티의 종류는 아래와같다.

 

Paint의 프로퍼티 3개

Paint.color = 대상의  색상, 도형의 색상을 정의 - 색상이 Color클래스에 정의 되어 있음

Paint.style = 도형의 형태, 외곽선을 그리거나 면을 채우는 등의 모양을 정의함 - Style클래스에 사용할 스타일이 미리 정의 되어 있음 ( Style.STROKE / Style.FILL / Style.STROKE_AND_FILL )

Paint.strokeWidth = 외곽선을 그릴 경우 외곽선의 두께를 정의 함

 

 View클래스에서 상속받은 후에 onDraw() 메서드로 전달되는 Canvas를 사용하면 원하는 그림을 그릴 수 있다.

버튼과 같은 태그로 사용하는 위젯들도 실제로는 View를 상속한 후에 이와 비슷한 형태의 코드로 구성된다.


drawCircle(cx, cy, radius, Paint) - 원 그리기

cx - x축 / cy - y축

drawCircle의 경우 좌표 값이 원의 중심이 되어 그려진다.


drawArc(x축,y축,반지름,페인트) - 원호 그리기

drawArc의 경우 좌표의 정보를 Paint처럼 RectF로 받아 그린다.

 

RectF.set(left, top, right, bottom) - 좌표와 크기 프로퍼티 4개

left - 도형의 시작점X / top - 도형의 시작점Y  (선의 굵기와 같게 하면 도형이 잘리지 않는다.)

right - 도형의 가로 길이 / bottom - 도형의 세로 길이

 

drawArc(RectF, startAngle, sweepAngle, useCenter, Paint) - 프로퍼티

startAngle - 그려질 시작점(각도) / sweepAngle - startAngle부터 그려질 끝점(각도)

useCenter - 시작 점과 끝점이 만나지 않는다면 중앙을 가로 질러 이을지의 여부

 


drawRect(Rect, Paint) - 사각형 그리기

drawRect는 사각형을 Rect클래스에 좌표의 정보를 받아 사용한다.

Rect와 RectF는 사용방법이 같고 차이점은 Rect는 Int형태이고 RectF는 Float형태이다.

 


drawRoundRect(RectF, rx, ry, Paint) - 각 모서리에 라운드가 적용된 사각형

rx - 가로 라운드 크기 / ry - 세로 라운드 크기

라운드의 크기를 도형크기의 반 만큼 적용하면 원으로도 만들 수 있다.

 

 


번외 - 한번에 모아 테스트

자원의 낭비가 될수 있다고 합니다.