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 ...
最新文章
- 外卖流量红利期已过:正从补贴战进入AI赛道
- Vcenter5.5安装部署:[2]web client的安装
- Android蓝牙串口通讯【转】
- .net 集合分成几个等数量集合_巧用数学游戏,帮助幼儿轻松掌握12种数量关系!...
- 双剑合璧————Spring Boot + Mybatis Plus
- BZOJ 3674 可持久化并查集
- 关于PHP页面显示乱码问题的解决
- rtpengine集群_ubuntu 安装 rtpengine
- 关于Android 11(R)适配指南
- 《道德经》与 (更新中)
- 7款最好用的图片无损,视频无损压缩软件
- 微软产品大升级:Surface Pro 6、Studio 2、Laptop 2 重磅来袭
- 目前见到的最傻瓜全面的STRUTS入门教程^_^
- 梦开始的地方 —— C语言数据在内存中的存储(整形+浮点型)
- BlueTooth: 无线技术之争谁将胜出 WiFi、蓝牙还是NFC?
- ffpmpeg 音量_有画面无声音 · Issue #2729 · bilibili/ijkplayer · GitHub
- handle与多线程
- maven基础:mvn命令常用参数整理;如:-am构建指定模块,同时构建指定模块依赖的其他模块
- 网络 | NAT、SNAT、DNAT
- educoder C++实战训练