Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- BFS
- kotlin
- androidstudio
- alogrithm
- android12
- AlertDailog
- 안드로이드#코틀린
- 안드로이드 앱 아키텍처
- android #androidstudio #fragmentdialog #kotlin
- mutablestatelistof
- android #google console
- 카카오로그인
- KioskMode
- 백준 5052
- Bluetooth Permission
- compose
- 티스토리챌린지
- algorithm
- cs #computer #network #internet
- android #android studio #compose #kotlin
- mutablestateof
- 오블완
- algoritm
- android #androidstudio #zsh
- android #androidstudio #compose #kotlin
- DFS
- Dynamic Programing
- algorithm #
- Android
- Jetpack Compose
Archives
- Today
- Total
스태틱하게 개발중
[Android] Compose drawLine를 이용한 선긋기 본문
Compose에서는 Canvas의 drawline 함수를 이용하여 선을 그릴 수 있습니다.
drawLine 함수
먼저 drawLine 내부 함수부터 살펴보겠습니다.
fun drawLine(
color: Color,
start: Offset,
end: Offset,
strokeWidth: Float = Stroke.HairlineWidth,
cap: StrokeCap = Stroke.DefaultCap,
pathEffect: PathEffect? = null,
@FloatRange(from = 0.0, to = 1.0) alpha: Float = 1.0f,
colorFilter: ColorFilter? = null,
blendMode: BlendMode = DefaultBlendMode
)
선을 그릴때 중요한것은 start, end, strokeWidth 입니다.
starts는 시작점, end 끝점, strokeWidth는 선의굵기 입니다.
start,end의 속성의 타입은 Offset이라는 클래스 입니다.
가로직선 코드
먼저 가로 직선을 그려보겠습니다.
Offset 파라미터에는 x, y 좌표를 넣어줍니다.
가로직선의 시작점 좌표 startX 값은 0f이고, 끝점 좌표 endX의 값은 width의 사이즈 입니다.
y좌표는 변하지 않으니 0f 으로 고정해줍니다.
@Composable
fun DrawHorizontalLine() {
Canvas(modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
val startX = 0f
val endX = size.width
drawLine(
color = Color.Black,
start = Offset(startX, 0f),
end = Offset(endX, 0f),
strokeWidth = 2.dp.toPx()
)
}
}
빌드를 하면 아래와 같은 가로 직선이 그려집니다.

세로직선 코드
세로직선 코드는 가로와 반대로 작성해주면 됩니다.
x좌표를 0f로 고정해주고 y좌표의 시작점과 끝점만 정해주면 됩니다.
@Composable
fun DrawHorizontalLine() {
Canvas(modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
val startY = 0f
val endY = size.height
drawLine(
color = Color.Black,
start = Offset(0f, startY),
end = Offset(0f, endY),
strokeWidth = 2.dp.toPx()
)
}
}
빌드를 하면 아래와 같은 세로 직선이 그려집니다.

바둑판 그리기
바둑판은 가로선과 세로선이 반복해서 그려진 형태입니다.
각 선사이의 간격을 정해주고, for문으로 반복해서 가로와 세로를 그려주면 됩니다.
@Composable
fun DrawLines() {
Canvas(modifier = Modifier
.fillMaxSize()
) {
val spacing = 50.dp.toPx() // 각 선 사이의 간격
val startX = 0f
val endX = size.width
// 가로
for (i in 0..(size.height / spacing).toInt()) {
val y = i * spacing
drawLine(
color = Color.Black,
start = Offset(startX, y),
end = Offset(endX, y),
strokeWidth = 2.dp.toPx()
)
}
val startY = 0f
val endY = size.height
// 세로
for (i in 0..(size.width / spacing).toInt()) {
val x = i * spacing
drawLine(
color = Color.Black,
start = Offset(x, startY),
end = Offset(x, endY),
strokeWidth = 2.dp.toPx()
)
}
}
}
빌드를 하면 바둑판 처럼 가로세로 직선이 반복해서 그려집니다.

감사합니다.
'Android' 카테고리의 다른 글
| [Android] Compose 버튼 효과제거 (0) | 2024.10.08 |
|---|---|
| [Android] 구글 플레이 콘솔 개발자 계정 인증 (0) | 2024.08.29 |
| [Android] zsh: command not found: adb 환경변수 설정 (0) | 2023.10.19 |
| [Android] 안드로이드12 새로운 Bluetooth 권한대응 (0) | 2023.09.08 |
| [Android] FragmentDialog 동적으로 Size, 위치 조절하기 (0) | 2023.09.07 |