본문 바로가기
SKIA

2.6 Canvas CheckerBoard

by SimonLee 2025. 5. 13.

 

728x90

// 체커보드 패턴을 그리는 함수
void checkerboard(SkCanvas* canvas) {
    SkColor color1 = SK_ColorLTGRAY;  // 배경 색상 (밝은 회색)
    SkColor color2 = SK_ColorCYAN;    // 패턴 색상 (청록색)

    SkScalar scale = 10.0f;           // 타일 하나의 기본 크기

    SkPath path;
    path.addRect(0, 0, scale, scale); // 패턴으로 사용할 사각형 경로 추가 (10x10)

    // 매트릭스를 생성해 사각형 패턴을 복제할 방법 정의
    SkMatrix matrix = SkMatrix::Scale(2 * scale, scale); // 가로로 2배, 세로는 scale만큼 간격
    matrix.preSkew(0.5f, 0);          // X축으로 0.5 만큼 기울이기 (비스듬한 체커보드 느낌)

    SkPaint paint;
    paint.setPathEffect(SkPath2DPathEffect::Make(matrix, path)); 
    // 위에서 만든 경로와 매트릭스를 이용해 반복되는 패턴 생성

    paint.setAntiAlias(true);        // 경계선 부드럽게
    paint.setColor(color2);          // 패턴 색상 설정

    canvas->clear(color1);           // 캔버스를 배경 색상으로 초기화

    SkRect bounds = SkRect::MakeWH(256, 256); // 256x256 영역 정의
    bounds.outset(scale, scale);     // 테두리 바깥으로 scale만큼 확장

    canvas->drawRect(bounds, paint); // 정의된 영역에 패턴 그리기
}

// 메인 그리기 함수
void draw(SkCanvas* canvas) {
    canvas->drawColor(SK_ColorWHITE); // 먼저 흰색으로 캔버스를 지우고
    checkerboard(canvas);             // 체커보드 패턴을 그린다
}

 

 

 

728x90

'SKIA' 카테고리의 다른 글

2.7 SkSurface  (0) 2025.05.19
2.5 Canvas read&write Pixels, saveLayer  (0) 2025.05.09
2.4 Canvas drawImage  (0) 2025.05.05
2.3 Canvas Drawable, DRRect  (0) 2025.05.05
2.1.1 Canvas Clip Rect & Region  (0) 2025.05.02