Skia Overview and API Reference
Skia简介和图形案例
Overview
Skia是一个开源的2D图形库,提供各种常用的API,并可在多种软硬件平台上运行。谷歌Chrome浏览器、Chrome OS、Android、火狐浏览器、火狐操作系统以及其它许多产品都使用它作为图形引擎。
Skia由谷歌出资管理,任何人都可基于BSD免费软件许可证使用Skia。Skia开发团队致力于开发其核心部分, 并广泛采纳各方对于Skia的开源贡献。
功能展示与图形案例
下图是一系列图形案例,用来展示Skia可以实现的功能。因为内容太多,浏览器无法渲染所有的图形示例,导致一部分Demo没有显示出来,变成了白色的方块。
这张图是Skia官方的示例图:
API Reference
关键的类
- SkAutoCanvasRestore - Canvas save stack manager
- SkBitmap - two-dimensional raster pixel array
- SkBlendMode - pixel color arithmetic
- SkCanvas - drawing context
- SkColor - color encoding using integer numbers
- SkFont - text style and typeface
- SkImage - two dimensional array of pixels to draw
- SkImageInfo - pixel dimensions and characteristics
- SkIPoint - two integer coordinates
- SkIRect - integer rectangle
- SkMatrix - 3x3 transformation matrix
- SkPaint - color, stroke, font, effects
- SkPath - sequence of connected lines and curves
- SkPicture - sequence of drawing commands
- SkPixmap - pixel map: image info and pixel address
- SkPoint - two floating point coordinates
- SkRRect - floating point rounded rectangle
- SkRect - floating point rectangle
- SkRegion - compressed clipping mask
- SkSurface - drawing destination
- SkTextBlob - runs of glyphs
- SkTextBlobBuilder - constructor for runs of glyphs
API Overview
SkCanvas
是Skia的核心,Skia的逻辑都是围绕着 SkCanvas
对象组织的。drawRect
, drawPath
, drawText
等所有的draw calls
(绘制命令)都由 SkCanvas
来管理。
draw calls
由两个部分构成:
primitive
(图元)-SkRect
,SkPath
, etc.color/style attributes
(颜色/样式属性)-SkPaint
SkCanvas
指明画在哪里(where),primitive
声明要画什么(what),SkPaint
说明怎么画(how)。
canvas->drawRect(rect, paint);
所以上面的代码的含义是:在给定的画布(canvas
)上绘制一个矩形,paint
参数用来描述如何绘制这个矩形,其中包含大量的状态用来描述:矩形是什么颜色,矩形是填充还是描边,应该如何与先前绘制的颜色混合。
相对于Paint
,Canvas
维护的状态较少,它的作用是:
- 指向要绘制的实际像素
- 维护
matrices
(矩阵)和clips
(裁剪)等操作的栈
因此,在上述调用中,canvas
的矩阵操作可以转换矩形的坐标(平移,旋转,倾斜,透视),并且canvas
的剪辑操作可以限制矩形在画布上绘制的位置,除此之外所有其他样式绘图的属性都由paint
控制。
参考文档:
https://skia.org/user/api
Skia Overview and API Reference相关推荐
- 【NFC】Android NFC API Reference中英文
SkySeraph 博客园 首页 新随笔 联系 订阅 管理 随笔- 192 文章- 0 评论- 441 [NFC]Android NFC API Reference中英文 [NFC]Androi ...
- Console Utilities API reference
摘自:https://developer.chrome.com/docs/devtools/console/utilities/ The Console Utilities API contains ...
- Skia overview
转自:http://blog.csdn.net/fengbingchun/article/details/38492061 Skia是一个C++的开源2D向量图形处理函数库(Cairo是一个矢量库), ...
- .net api reference中文_在macOS上使用.NET SDK编译 .NET 通用中间语言
当你编译C#.F#或http://VB.NET代码时,编译器不会将其编译成原生代码,而是将其编译成通用中间语言.然后,IL代码被CLR/CoreCLR编译成可以在CPU上运行的机器代码.我想给大家展示 ...
- kmdjs api reference
总览 kmdjs的主要就两个API:kmdjs.config和define kmdjs.config kmdjs.config是用于项目整体配置,一般的配置如下所示: kmdjs.config({na ...
- 在线html5 api中文版,HTML5+ API Reference
IO模块管理本地文件系统,用于对文件系统的目录浏览.文件的读取.文件的写入等操作.通过plus.io可获取文件系统管理对象. 常量: 方法: 对象: DirectoryEntry: 文件系统中的目录对 ...
- SAP WebIDE:how to enable context API reference
Created by Wang, Jerry on Jan 18, 2015 complete url: https://sapui5.hana.ondemand.com/sdk/#docs/api/ ...
- html5在线api,HTML5+ API Reference
Push模块管理推送消息功能,可以实现在线.离线的消息推送,通过plus.push可获取推送消息管理对象. 方法: 对象: ClientInfo: JSON对象,获取的客户端标识信息 PushMess ...
- html5 push api,HTML5+ API Reference
Push模块管理推送消息功能,可以实现在线.离线的消息推送,通过plus.push可获取推送消息管理对象. 方法: 对象: ClientInfo: JSON对象,获取的客户端标识信息 PushMess ...
最新文章
- 微软无解!Win10用户突然减少:装回Win7
- 未来属于人工智能工程师,但成功转型不容易
- TikTok英国市场你不能不知道的10大数据
- 被误读的博弈:谁才是大厂解除屏蔽的最终受益者?
- 进位赛迪百强榜,雨花区的“高质量”发展底座有多坚实?
- ITK:计算图像的绝对值
- java对象序列化克隆_Java8基础知识(三)对象克隆与序列化
- react学习(31)----react父传子
- wxpython wx listctrl_wxPython - ListCtrl列表排序
- 非标自动化企业前十名_企业动态 | 瑞弗机电:全链条拓展“非标定制” 量身定制自动化生产线...
- mysql canvert mongo_如何在MongoDB中的$match中使用聚合运算符(例如$year或$dayOfMonth)?...
- 剑指offer之合并有序链表
- mysql如何查询不等于_mysql查询不等于
- [R语言绘图]绘图样式设置(符号、线条、颜色、文本属性)
- SAS硬盘-神级高性能硬件盘点
- Unity动画 代码加载动画,可复用
- exls表格搜索快捷键_excel搜索快捷键 如何在excel里快速找到需要的信息
- R语言在逻辑回归中求R square R方
- JavaScript 销毁对象
- Java创建对象方式初谈
热门文章
- 用C#实现模拟双色球中奖程序 控制台应用程序
- C语言结构体指针强转
- c语言while将字符循环,C语言 while语句的用法详解
- 三维空间中平面的法向量计算(2)
- 写给想学和在学编程的你们,学习编程的7个好处
- 计算机专硕370什么水平,考研370分是什么概念 好考吗
- (转载)供电电路切换与锂电池充电电路设计
- NVIDIA GPU A100 Ampere(安培) 架构深度解析
- Java bad verson 错误
- eclipse- Web-app verson=2.5 调整将Dynamic Web Module3.0降为2.5