본문 바로가기

안드로이드

[안드로이드] 간단한 Canvas, Paint 클래스 문법

728x90

안드로이드 스튜디오에서 간단하게 도형을 그리는 Java 코드입니다.

 

아래 이미지와 같은 도형을 그리게 됩니다.

 

# MainActivity.java

package com.siku.paint;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // activity_main.xml이 아닌 재정의한 클래스를 화면에 보여줍니다.
        setContentView(new MyGraphicView(this));
    }
	
    // View 클래스를 상속받아 재정의한 클래스
    private static class MyGraphicView extends View {
        public MyGraphicView(Context context){
            super(context);
        }

        @Override
        // 클래스가 생성되면 호출되는 함수
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            Paint paint = new Paint();
			
            // (1) paint를 설정하고
            paint.setAntiAlias(true);
            paint.setColor(Color.GREEN);
            
            // (2) canvas에 그립니다.
            canvas.drawLine(10,10,300,10,paint);

            
            // (1) paint의 색깔을 파란색으로 설정
            paint.setColor(Color.BLUE);
            
            // (2) paint의 두깨를 5 로 설정
            paint.setStrokeWidth(5);
            
            // (3) canvas에 직선을 그립니다.
            // x 10, y 30 에서 x 300, y 30 좌표를 잇는 직선을 paint로 그립니다.
            canvas.drawLine(10,30,300,30,paint);

            paint.setColor(Color.RED);
            paint.setStrokeWidth(0);

            // paint의 스타일을 채움으로 설정
            paint.setStyle(Paint.Style.FILL);
            
            // 직사각형을 설정합니다.
            // 왼쪽 위 꼭지점이 x 10, y 50. 오른쪽 아래 꼭지점이 x 110, y 150에 위치합니다.
            Rect rect1 = new Rect(10, 50, 10+100, 50+100);
            
            // rect1 위치에 paint로 직사각형을 그립니다. 
            canvas.drawRect(rect1, paint);

            paint.setStyle(Paint.Style.STROKE);
            Rect rect2 = new Rect(130, 50, 130+100, 50+100);
            canvas.drawRect(rect2, paint);

            // 모서리가 라운드처리된 직사각형을 그립니다.
            RectF rect3 = new RectF(250, 50, 250+100, 50+100);
            
            // 앞의 20은 가로선의 양끝에서 라운드처리가 되는 길이
            // 뒤에 20은 세로선의 양끝에서 라운드처리가 되는 길이입니다.
            canvas.drawRoundRect(rect3, 20, 20, paint);

            // 원을 그립니다.
            // 원의 중심점이 x 60, y 220에 위치하고 반지름 50으로 그립니다.
            canvas.drawCircle(60, 220, 50, paint);

            paint.setStrokeWidth(5);
            
            // 경로를 설정할 수 있습니다.
            Path path1 = new Path();
            
            // 시작지점 설정 후
            path1.moveTo(10, 290);
            
            // 반복해서 다음 지점을 추가할 수 있습니다.
            path1.lineTo(10+50, 290+50);
            path1.lineTo(10+100, 290);
            path1.lineTo(10+150, 290+50);
            path1.lineTo(10+200, 290);
            
            // 설정된 경로를 따라 직선을 그립니다.
            canvas.drawPath(path1, paint);

            paint.setStrokeWidth(0);
            paint.setTextSize(50);
            
            // 문자열을 그릴 수도 있습니다.
            canvas.drawText("캔버스와 페인트", 10, 390, paint);
        }
    }
}

 

728x90