本文介绍,在浏览器中,调用SkCanvas的接口,背后实际做的事情。
相关的类
SkCanvas
SkCanvas是Skia的绘图上下文,它提供了一个绘图接口,封装了所有对设备进行的绘图操作。实现图形剪切和变换。维护变换矩阵和裁剪等操作的堆栈等。
SkCanvas包含了一个设备的引用,它知道将图形绘制到哪里。SkCanvas和SkPaint共同提供了在SkSurface或SkBaseDevice进行绘制操作所需的状态。SkCanvas使用SkPaint为每个绘制操作提供绘制所需的,诸如颜色,文本size,线宽,SkShader等状态信息。每个SkCanvas绘制操作通过串联堆栈中的所有SkMatrix值对绘制对象做几何形状变换。通过对堆栈中的所有裁剪值做交集来对绘制对象做裁剪。
通过SkCanvas可以绘制到基于像素的设备上,也可以绘制到一个document。要绘制到指定的像素上,我们需要先创建raster surface或GPU surface。通过SkSurface生成SkCanvas,从而得到绘制接口。
不同的SkSurface生成的SkCanvas差别很大:
raster surface生成的SkCanvas,是绘制到内存中,对CPU可见。
GPU surface生成的SkCanvas,是绘制到GPU上。
Skia还提供了其它的Backends:
- SkPDF - PDF document creation.
- SkPicture - Skia's display list format.
- NullCanvas - Useful for testing only.
- SkXPS - Experimental XPS backend.