본문 바로가기

SKIA8

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.4 Canvas drawImage 함수설명drawImage(image, x, y)위치 (x, y)에 이미지를 그린다. 기본 샘플링, paint 없음drawImage(image, x, y, sampling)샘플링 방식 지정 (예: 선형 보간 등)drawImage(image, x, y, sampling, paint)투명도, 효과, blend 설정 가능drawImage(image, dstRect, sampling, paint)이미지를 dstRect에 스케일링해서 그림 함수설명drawImageRect(image, dstRect, sampling)이미지를 dstRect에 맞게 스케일링해서 그림. Paint 없음drawImageRect(image, dstRect, sampling, paint)스케일링 + 투명도/효과/블렌드 적용drawImageR.. 2025. 5. 5.