본문 바로가기

전체 글118

2.7 SkSurface SkSurface는 렌더 타겟이다.렌더 타겟에 렌더링을 하고 이미지로 가져오는 방식을 알아보자. CPU 기반 캔버스 다음 예제는 CPU기반 SkSurface를 생성하여 이미지로 전환 후 캔버스를 통해 렌더링하는 예제이다. SkCanvas를 생성하는 함수는 SkSurfaces::Raster() 이다.CPU Ram을 사용하여 만든 서피스 이며, GPU 없이 이미지 버퍼를 만들고 그 위에 그림을 그릴 수 있다.파라메터로 SkImageInfo를 사용하며, 예제에서는 프리멀티플 64, 64 크기의 서피스를 생성한다.SkSurface의 makeSurface 함수를 사용하면,동일한 ImageInfo를 사용하되, 속성 값은 다르게 사용 할 수 있으며, 내부 픽셀값은 공유 하지 않는다. SkPixmap이 등장하는데, S.. 2025. 5. 19.
2.6 Canvas CheckerBoard // 체커보드 패턴을 그리는 함수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배,.. 2025. 5. 13.
2.5 Canvas read&write Pixels, saveLayer ReadPixelsvoid draw(SkCanvas* canvas) { // 캔버스를 파란색으로 클리어 canvas->clear(SK_ColorBLUE); SkPaint paint; // 중심 (32,32), 반지름 28짜리 원을 그림 (기본색 = 검정) canvas->drawCircle(32, 32, 28, paint); // 64x64 크기, BGRA8888 포맷, Premultiplied 알파의 이미지 정보 생성 SkImageInfo info = SkImageInfo::Make(64, 64, kBGRA_8888_SkColorType, kPremul_SkAlphaType); // info에 맞는 크기의 메모리 할당 (64x64x4 = 16384바이트) .. 2025. 5. 9.
2.2 Canvas DrawXX < 나중에 다시 정리 > ex) Canvas_drawRect setStyle 종류 ( 도형을 어떻게 그릴것인지 결정 )style 종류의미설명시각적 예kFill_Style채우기 전용도형 안쪽을 채움■ ●kStroke_Style선(테두리)만 그림내부는 비우고 외곽선만 그림□ ○kStrokeAndFill_Style채우고 선도 그림안도 채우고 테두리도 그림◎ ◉ setStrokeJoin 종류 ( 코너를 어떻게 그릴것인지 결정 )stroke join 종류의미설명시각적 예SkPaint::kMiter_Join날카로운 모서리 (뾰족하게) 연결기본값, 각도가 작을수록 길게 튀어나올 수 있음┏━, ⎾ ┓SkPaint::kBevel_Join모서리를 뚝 자른 형태로 연결뾰족함 없이 평평하게 잘림◣, ↘SkPaint::kRound_Join모서리를.. 2025. 5. 7.