본문 바로가기
Android/Android Basic

안드로이드 패스 그리기

by 수쓰뎁 2023. 2. 18.


1. 패스(Path)

패스는 복잡한 기하학적인 경로를 표현해주며, 직선과 타원, 곡선으로 이루어질 수 있다.

패스는 캔버스의 메서드 drawPath() 메서드를 이용하여 그려진다.

 

  • void drawPath(Path path, Paint paint)
    주어진 paint를 이용하여 주어진 패스를 그린다.

 

다음은 path가 제공하는 메서드들이다.

 

  • addArc(RectF oval, float startAngle, float sweepAngle)
    패스에 원호를 그린다.
  • addCircle(float x, float y, float radius, Path.Direction dir)
    패스에 원을 추가한다.
  • addOval(RectF oval, Path.Direction dir)
    패스에 타원을 추가한다.
  • addRect(float left, float top, float right, float bottom, Path.Direction dir)
    패스에 사각형을 추가한다.
  • addRoundRect(Rect rect, float rx, float ry, Path.Direction dir)
    패스에 둥근 사각형을 추가한다.
  • arcTo(RectF rect, float rx, float ry, Path.Direction dir)
    패스에 원호를 추가한다.
  • cubicTo(float x1, float y1, float x2, float y2, float x3, float y3)
    패스에 베지어 곡선을 추가한다.

2. 패스 위에 텍스트 그리기 구현

패스를 생성하고 패스 위에 텍스트를 그리는 애플리케이션을 작성해보자.

다음과 같이 MainActivity.java 코드를 작성한다.

class MyView extends View {

    public MyView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        Path path = new Path();		// 패스를 생성
        Paint paint = new Paint();

        paint.setStyle(Paint.Style.STROKE);

		// 패스에 도형을 추가한다.
        path.moveTo(20, 400);
        path.lineTo(300, 800);
        path.cubicTo(450, 120, 600, 1200, 900, 800);

		// 패스를 그린다.
        paint.setColor(Color.BLUE);
        canvas.drawPath(path, paint);

        paint.setStyle(Paint.Style.FILL);
        paint.setTextSize(200);
        canvas.drawTextOnPath("This is a Test!!!", path, 0, 0, paint);	// 패스 위에 텍스트를 그린다.

    }
}
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MyView(this));
    }
}

3. 패스 위에 텍스트 그리기 실행 결과

패스 위에 텍스트 그리기 예제의 실행 결과는 다음과 같다.

구현하고자 했던대로 패스 위에 텍스트가 그려지는 것을 확인할 수 있다.

반응형

댓글