[Compose Canvas] Canvas drawCircle 사용해 원 만드는 방법 한 번에 정리하기

2023. 7. 22. 21:08· Android Jetpack Compose UI/Compose Canvas
목차
  1. 이번 글에서 다룰 내용
  2. drawCircle 함수 살펴보기
  3. drawCircle 함수 사용해보기
  4. drawCircle 정리
반응형

이번 글에서 다룰 내용

이번 글에서는 drawCircle 사용법에 대해 다룬다. drawCircle 또한 Color을 사용하는 drawCircle 함수와 Brush를 사용하는 drawCircle이 있는데, Brush 사용법은 이전 글 drawRect에서 다룬 것과 동일하므로 Color을 사용하는 drawCircle만 다루도록 한다.

 

drawCircle 함수 살펴보기

drawCircle은 color, radius, center, alpha, style, colorFilter, blendMode를 파라미터로 받는다.

fun drawCircle(
    color: Color,
    radius: Float = size.minDimension / 2.0f,
    center: Offset = this.center,
    /*@FloatRange(from = 0.0, to = 1.0)*/
    alpha: Float = 1.0f,
    style: DrawStyle = Fill,
    colorFilter: ColorFilter? = null,
    blendMode: BlendMode = DefaultBlendMode
)

각 파라미터는 다음의 역할을 한다.

  • color: 원의 색상을 결정
  • radius: 원의 반지름을 설정
  • center: 원의 중간점을 설정

*alpha, style, colorFilter, blendMode는 이전 글에서 다룬 drawRect와 동일하므로 설명을 생략한다. 

 

 

왼쪽 위 꼭지점이 기준점이 되는 사각형과 다르게, 원은 center이 기준점이 되고, 해당 기준점으로부터의 반지름의 크기만큼 원으로 그려진다.

 

drawCircle 함수 사용해보기

300dp 크기의 Canvas의 중간 지점에 drawCircle을 사용해 100dp의 반지름을 가진 파란색 원을 그린다고 해보자. Canvas의 중간지점은 (150dp, 150dp)이므로, drawCircle의 center을 해당 지점으로 설정하면 된다. 반지름은 100dp이므로, radius에는 100dp를 넘겨주면 된다.

 

이를 완성하면 다음과 같은 코드가 된다. 

@Preview(showBackground = true)
@Composable
fun DrawCircle() {
    Canvas(
        modifier = Modifier
            .size(300.dp)
            .background(Color.White),
        onDraw = {
            drawCircle(
                color = Color.Blue,
                radius = 100.dp.toPx(),
                center = Offset(150.dp.toPx(), 150.dp.toPx())
            )
        }
    )
}

color에는 Color.Blue를 넘겨서 파란색으로 설정하고, 반지름은 100dp로 설정 하고, 중간점은 (150dp,150dp)로 설정된다.

 

이에 대한 Preview는 다음과 같은 모양이 되는 것을 확인할 수 있다. 캔버스 중간에 원이 그려지는 것을 볼 수 있다.

 

 

drawCircle 정리

drawRect는 왼쪽 위 꼭지점이 도형을 그리기 위한 기준점이었는데, drawCircle은 중심점이 도형을 그리기 위한 기준점이다. 이는 각 도형이 가진 특징 때문인데, 각 도형을 그리기 위한 기준점을 다르다는 것을 이해하고 이후 다룰 도형들이 어떤 기준점을 가지는지를 생각하며 다루도록 하자.

또한 도형을 그리는 것은 도형을 그리는 기준점과 그리는 방식 말고는 도형을 구성하는 요소가 같기 때문에 공통적으로 alpha, style, colorFilter, blendMode를 가지고 있다. 어떤 도형에서든지 이 파라미터들을 사용할 수 있음을 기억하자.

반응형
저작자표시 비영리 변경금지
  1. 이번 글에서 다룰 내용
  2. drawCircle 함수 살펴보기
  3. drawCircle 함수 사용해보기
  4. drawCircle 정리


 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com

'Android Jetpack Compose UI/Compose Canvas' 카테고리의 다른 글
  • [Compose Canvas] Canvas drawArc 사용해 부채꼴과 호 그리는 방법 한 번에 정리하기
  • [Compose Canvas] Canvas drawOval 사용해 타원 그리는 방법 한 번에 정리하기
  • [Compose Canvas] Canvas drawRoundRect 사용해 라운딩 처리된 사각형 만드는 방법 한 번에 정리하기
  • [Compose Canvas] Canvas drawRect 사용해 사각형 만드는 방법 한 번에 정리하기
Dev.Cho
Dev.Cho
'조세영의 Kotlin World'는 Kotlin를 전문적으로 다루는 개인 기술 블로그입니다. Kotlin 세계에 대한 양질의 자료를 제공하며 Kotlin, Android, Spring, CI, CD 분야에 대해 다룹니다.
Dev.Cho
조세영의 Kotlin World
Dev.Cho
전체
오늘
어제

블로그 메뉴

  • LinkedIn
  • GitHub
  • 분류 전체보기 (491)
    • Kotlin (104)
      • Class and Interface (19)
      • Variable and Function (8)
      • Modifier (5)
      • Collection (14)
      • Time (8)
      • 동시성 제어 (7)
      • Reactive Programming (2)
      • Paradigm (2)
      • Kotlin 자료구조 (15)
      • Design Patterns (11)
      • Algorithm (3)
      • Exception (1)
      • 기타 (9)
      • Update History (0)
    • Coroutines (32)
      • Coroutine Basics (18)
      • Flow (9)
      • CoroutineScope (3)
      • Debugging (2)
    • Testing Codes (28)
      • Test 기본 (3)
      • JUnit5 (9)
      • MockK (6)
      • Testing Coroutines (1)
      • Testing Android (8)
      • Test 기타 (1)
    • Spring (50)
      • Dependency Injection (18)
      • Settings (5)
      • REST API (0)
      • DevTools (1)
      • MVC (18)
      • Error (2)
      • MongoDB (2)
      • Database (4)
    • Android (39)
      • Architecture (2)
      • Component (5)
      • Manifest (1)
      • Lifecycle (2)
      • Dependency Injection (17)
      • Resource (1)
      • Storage (1)
      • Security and Optimization (1)
      • WebView (2)
      • Error (6)
    • Android Jetpack Compose (33)
      • Compose (6)
      • Compose Modifier (13)
      • Compose Resource (4)
      • Compose State (4)
      • Compose Side Effect (6)
    • Android Jetpack Compose UI (48)
      • Compose Layout (14)
      • Compose Text (10)
      • Compose Button (5)
      • Compose Dialog (2)
      • Compose TextField (0)
      • Compose UIs (4)
      • Compose Animation (1)
      • Compose Canvas (12)
    • Android Jetpack (10)
      • Datastore (5)
      • ViewModel (4)
      • LiveData (1)
      • Paging (0)
    • KMP (5)
    • Programming (4)
    • Machine (9)
      • JVM (7)
      • Linux (2)
    • CI, CD (74)
      • Gradle (12)
      • Groovy Gradle (5)
      • Git (25)
      • Git Remote (5)
      • GitHub (5)
      • GitHub Actions (21)
    • Network (33)
      • GraphQL (12)
      • HTTP (11)
      • Basic (9)
    • 오픈소스 (3)
    • Database (3)
      • MongoDB (3)
    • IDE (6)
      • Android Studio (2)
      • Intellij (4)
    • Firebase (1)
    • Javascript (9)

공지사항

  • 코틀린 코루틴 완전 정복 강의 in 인프런 오픈
  • 코틀린 코루틴의 정석 책 출간
  • Kotlin Coroutines 공식 기술 문서 한국어 번⋯
  • GitHub에서 조세영의 Kotlin World를 Foll⋯
  • 문의&제안

인기 글

태그

  • junit
  • 스프링
  • Android Compose
  • dagger2
  • Coroutine
  • HTTP
  • junit4
  • 안드로이드
  • 코틀린
  • 유닛 테스팅
  • Spring boot
  • compose
  • Android
  • github
  • github actions
  • 의존성 주입
  • Kotlin
  • Class
  • 코루틴
  • kotlin spring
  • GIT
  • flow
  • GraphQL
  • Spring
  • gradle
  • Unit Testing
  • Jetpack Compose
  • Dependency Injection
  • java
  • junit5

최근 글

반응형
hELLO · Designed By 정상우.v4.3.0
Dev.Cho
[Compose Canvas] Canvas drawCircle 사용해 원 만드는 방법 한 번에 정리하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.