2312skia,17路径和api概述
SkPath
概述
路径
包含可描边或填充
的线条和曲线
.轮廓
由一系列相连的直线和曲线
组成.路径
可包含零个,多个
等值线.每条直线和曲线
都由动词,点
和可选Path_Conic_Weight
描述.
每对连接
的直线和曲线
共享公共点
;如,包含两条
连接线的路径按Path_Verb
序列描述:SkPath::kMove_Verb,SkPath::kLine_Verb,SkPath::kLine_Verb;
带三个项的Point
序列,按第一行的结束和第二行的开始共享
中间项.
路径组件"弧","矩形","圆角矩"
,"圆"和"椭圆"
由带精确
描述期望的多个动词和点
的直线和曲线
组成.添加
到Path
后,这些组件
可能会失去其标识;
但可检查Path
以确定它是否描述
了单个Rect,Oval,Round_Rect
等.
例:
路径
包含三个轮廓
:直线,圆形和四边形
.描边但未填充线条
.描边和填充圆圈
;描边圆
形成一个圈.描边和填充Quad
,但因为它没有闭合
,因此Quad
不会描边圈.
“路径”(Path)
包含一个来确定重叠轮廓
是形成填充还是孔洞
的Path_Fill_Type
,还可确定
是填充"直线和曲线"
内部还是外部的区域
.
例
先绘画
填充路径,然后描边
,然后描边和填充
.
从不共享
路径内容.按值复制
路径可有效
创建一个独立于原始路径
的新路径
.内部,在编辑之前不会复制副本
内容,以减少
内存使用并提高
性能.
轮廓
包含多个
动词,及满足Path_Verb_Array
期望的多个点
.路径
中的第一个Path_Verb
总是是SkPath::kMove_Verb;
,接着的每个SkPath::kMove_Verb
都会启动新的轮廓
.
例
每个SkPath::moveTo
都会启动一个新的轮廓
,SkPath::close()
之后的内容
也会启动一个新的轮廓
.因为SkPath::conicTo
前面没有SkPath::moveTo
,因此第三个
轮廓的第一个点
从第二个轮廓
的最后点
开始.
如果轮廓
中的最终Path_Verb
是SkPath::kClose_Verb
,则Line
连接轮廓
中的Path_Last_Point
与第一个点
起来.
在Path_Last_Point
点和第一个点画Paint_Stroke_Join
描边闭合轮廓.如果没有SkPath::kClose_Verb
作为最终
动词,则不会连接Path_Last_Point
和第一个点.
轮廓
保持打开
.在Path_Last_Point
点和第一个点画Paint_Stroke_Cap
来描边
开放轮廓
.
例
用开和闭
轮廓描边
绘画的路径
.
等值线
长度是从第一个点到Path_Last_Point
点的行进距离
,如果闭合等值线
,则为从Path_Last_Point
点到第一个点
的距离.
即使等值线
长度为零,如果描边线条
可见,也会绘画Paint_Stroke_Cap
描边线条.
接口索引
一些关键类
是:
1,SkAutoCanvasRestore
,Canvas
保存栈管理器
2,SkBitmap
:二维光栅
像素数组
3,SkBlendMode
:像素颜色
算术
4,SkCanvas
:绘图环境
5,SkColor
:用整数
编码的颜色
6,SkFont
:文本风格和字体
7,SkImage
:要绘画的二维像素数组
8,SkImageInfo
:像素尺寸和特征
9,SkIPoint
:两个整数坐标
10,SkIRect
:整数矩形
11,SkMatrix
:3x3
变换矩阵
12,SkPaint
:颜色,描边,字体,效果
13,SkPath
:连接直线和曲线的序列
14,SkPicture
:绘图命令
序列
15,SkPixmap
:像素映射,图像信息和像素地址
16,SkPoint
:两个浮点坐标
17,SkRRect
:浮点圆角矩形
18,SkRect
:浮点矩形
19,SkRegion
:压缩剪切
掩码
20,SkSurface
:绘图目的地
21,SkTextBlob
:运行
符号
22,SkTextBlobBuilder
:字形块
的构造器
概述
Skia
围绕SkCanvas
对象组织.它是调用"draw"
的主机:drawRect,drawPath,drawText
等.其中每个都有两个组件
:正在绘画
的原语(SkRect,SkPath
等)和颜色/风格
属性(SkPaint)
.
canvas:>drawRect(rect, paint);
画笔
保留了(本例中)描述如何绘画矩形
的大部分状态:颜色
,填充或描边
,如何与以前绘画
内容混合
.
画布
保存的状态相对较少.它指向正在绘画
的实际像素
,并维护一堆矩阵
和剪切
.
因此,上面调用中,画布的当前矩阵
可转换矩形
的坐标(平移,旋转,倾斜,透视)
,画布的当前剪切
可能会限制矩形
在画布上的绘画位置
,但绘图
的所有其他风格属性
都由画布
控制.