PATH

    [Compose Canvas] Stroke의 cap 사용해 선과 경로의 양끝 모양 설정하기 : StrokeCap

    Stroke의 cap 프로퍼티는 무엇을 하는가? Canvas를 다루면서 수많은 선과, 경로를 만들어낸다. 선과 경로를 만들어내는 것까지는 좋은데, 해당 선과 경로는 생각보다 아름답지 않다. 예를 들어 아래와 같은 코드를 만들어보자. @Preview(widthDp = 400, heightDp = 600) @Composable fun DrawCap() { Canvas( modifier = Modifier .fillMaxSize() .background(Color.White), onDraw = { val path = Path().apply { moveTo(100.dp.toPx(), 100.dp.toPx()) // 시작점 변경 lineTo(200.dp.toPx(), 500.dp.toPx()) // (100, 1..

    [Compose Canvas] Path의 close 함수 사용해 시작점과 현재 기준점 연결하기

    시작점과 현재 기준점을 연결하지 않았을 경우의 문제 아래의 Path를 보자. 아래 Path의 마지막 줄의 lineTo 함수는 이전 기준점인 (300, 100)와 (100, 100)을 잇는 직선을 생성한다. val path = Path().apply { moveTo(100.dp.toPx(), 100.dp.toPx()) // 시작 지점 (100, 100) lineTo(100.dp.toPx(), 300.dp.toPx()) lineTo(300.dp.toPx(), 300.dp.toPx()) lineTo(300.dp.toPx(), 100.dp.toPx()) lineTo(100.dp.toPx(), 100.dp.toPx()) // (300, 100)과 (100, 100)을 잇는 직선 생성 } 이 Path는 정상적으로 ..

    [Compose Canvas] Path란 무엇인가?

    Path 란 무엇인가? Path는 직선이나 곡선 등의 기하학적인 경로들을 캡슐화하는 클래스이다. Path는 내부에 그려지는 직선 혹은 곡선 정보 등을 포함할 수 있다. 예를 들어 (100, 100) 지점에서 시작하는 200px 크기의 정사각형은 다음과 같이 그릴 수 있다. val path = Path().apply { moveTo(100.dp.toPx(), 100.dp.toPx()) // 시작 지점 옮기기 lineTo(100.dp.toPx(), 300.dp.toPx()) lineTo(300.dp.toPx(), 300.dp.toPx()) lineTo(300.dp.toPx(), 100.dp.toPx()) lineTo(100.dp.toPx(), 100.dp.toPx()) } 1. 먼저 (100f, 100f) ..

    [GitHub Actions] Job 간에 파일 공유하기

    서로 다른 가상 머신에서 동작하는 Job build Job을 통해 ubuntu-latest 머신에 저장된 파일들은 다른 Job에서 접근이 불가능하다. 같은 이름의 머신이더라도 실제는 다른 가상 머신에서 돌아가기 때문이다. 따라서 build Job 다음에 실행되는 deploy Job을 추가한 다음 위에서 Apk를 Job Artifact로 만드는데 사용한 Path를 제공한다면 접근할 수 없다. 한 번 시도해 보자. 먼저 빌드를 하는 Job을 만든다. build: runs-on: ubuntu-latest steps: - name: Check out Repository uses: actions/checkout@v3 - name: set up JDK 11 uses: actions/setup-java@v3 with..