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_VerbSkPath::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);

画笔保留了(本例中)描述如何绘画矩形的大部分状态:颜色,填充或描边,如何与以前绘画内容混合.
画布保存的状态相对较少.它指向正在绘画实际像素,并维护一堆矩阵剪切.
因此,上面调用中,画布的当前矩阵可转换矩形的坐标(平移,旋转,倾斜,透视),画布的当前剪切可能会限制矩形在画布上的绘画位置,但绘图的所有其他风格属性都由画布控制.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/193515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试真题-电脑病毒感染-2023年OD统一考试(C卷)

题目描述: 一个局域网内有很多台电脑,分别标注为0 - N-1的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t表示。 其中网络内一个电脑被病毒感染,其感染网络内所有的电脑需要最少需要多长时间。如果最后有电脑不会感染,则返回-1 给定一个数组times表示一个…

华为OD机试真题【异常的打卡记录】

1、题目描述 【异常的打卡记录】 考勤记录是分析和考核职工工作时间利用情况的原始依据,也是计算职工工资的原始依据,为了正确地计算职工工资和监督工资基金使用情况, 公司决定对员工的手机打卡记录进行异常排查。 如果出现以下两种情况&…

Tektronix泰克示波器

一、what’s the oscilloscope? 【ref】https://www.tek.com.cn/blog/what-is-an-oscilloscope 二、基础知识 1、带宽:100Mhz;采样率:2.5GS/s 1GS/s指的是采样率,前面大写的S是sample采样的意思 后面的s是秒 也就是示波…

软考2016年上半年第六题(适配器模式)与手术训练系统项目适配器模式的应用

软考2016年上半年第六题 public class Address {public void street(){System.out.println("a");};public void zip(){};public void city(){}; }package org.example.适配器模式;/*** 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间…

Python自动化办公入门教程

个人网站 文章首发于公众号:小肖学数据分析 1. 简介 在职场中,自动化已经成为提升工作效率的关键手段。作为一种强大且易于学习的编程语言,Python为执行各种自动化任务提供了众多便利。 无论是数据分析、报告生成、邮件处理还是网络数据采…

ocr识别过程中的python知识点总结

一、Python [::-1]的简单理解与用法 从结果上来看,[::-1]的作用是对列表进行翻转,比方说: a [1, 2, 3, 4, 5] print(a[::-1]) b "12345" print(b[::-1]) 输出: [5, 4, 3, 2, 1] 54321 可以发现这个东西的用法和re…

Beta冲刺随笔-DAY4-橘色肥猫

这个作业属于哪个课程软件工程A这个作业要求在哪里团队作业–站立式会议Beta冲刺作业目标记录Beta冲刺Day4团队名称橘色肥猫团队置顶集合随笔链接Beta冲刺笔记-置顶-橘色肥猫-CSDN博客 文章目录 SCRUM部分站立式会议照片成员描述 PM报告项目程序/模块的最新运行图片…

设计模式-结构型模式之装饰者设计模式

文章目录 六、装饰者模式 六、装饰者模式 装饰者模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。它是作为现有的类的一个包装。 装饰类和被装饰类可以独立发展,不会相互耦合,装饰者模…

力扣题:字符串的反转-11.22

力扣题-11.22 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:541. 反转字符串 II 解题思想:进行遍历翻转即可 class Solution(object):def reverseStr(self, s, k):""":type s: str:type k: int:rtype: str"&quo…

DAPP开发【05】ERC20/ERC721简介

ERC20是以太坊上最受欢迎和广泛使用的代币标准之一。ERC20代币符合一组通用规则,包括代币的转账方法和余额查询方法。这些规则使得 ERC20 代币易于与钱包、交易所和其他合约进行集成和交互。 ERC20标准规定了代币合约必须实现以下6个函数: balanceOf(ad…

【Python】tensorflow学习的个人纪录(2)

actor.learn(s, a, td_error)def learn(self, s, a, td):s s[np.newaxis, :]feed_dict {self.s: s, self.a: a, self.td_error: td}_, exp_v self.sess.run([self.train_op, self.exp_v], feed_dict)return exp_v输入变量的数值: 步进: []---->[…

JavaWeb(二)

一、SQL简介 结构化查询语言,一门操作关系型数据库的编程语言。英文:Structured Query Language,简称 SQL。 二、Mysql和Oracle关于区分大小写 MySQL在Windows下都不区分大小写。 oracle中分为两种情况,单纯的sql语句不区分大小…

漏洞扫描服务是什么

漏洞扫描服务是维护网络安全的重要一环。通过定期或实时的漏洞扫描,组织可以及时发现并修复可能存在的安全威胁,增强自身网络的安全性。在选择漏洞扫描服务时,需要明确自身的需求和目标,并选择合适的工具和服务提供商。只有这样&a…

在一个没有超级用户的mongodb 生产库上如何添加超级用户

说来这个问题,都觉得不可思议,一个数据库怎么没有超级用户呢,我们知道,MYSQL,PG,ORACLE等,创建好后,都有一个默认的超级用户,MONGODB也有超级用户,但需要自己…

前端分片上传

前端分片上传是一种将大文件分成若干个小块进行上传的方式,以解决大文件上传时网络不稳定或上传速度慢的问题。下面是前端分片上传的基本步骤: 使用JavaScript读取文件,将文件分成若干块。可以使用File API来实现这个功能。使用XMLHttpReque…

使用VC++实现锐化处理(使用Sobel算子、Prewitt算子、Isotropic算子)

使用VC实现锐化处理(使用Sobel算子、Prewitt算子、Isotropic算子) 获取源工程可访问gitee可在此工程的基础上进行学习。 该工程的其他文章: 01- 一元熵值、二维熵值 02- 图像平移变换,图像缩放、图像裁剪、图像对角线镜像以及图像…

Vxworks6.9的在线gdb调试(仿真内核和板载内核)

创作目的:归纳总结常用的技巧和方法,方便自己后续查阅重点节省时间。 一、仿真内核的gdb调试 1、新建DKM工程,选择sim的BSP包 2、DKM工程中添加c文件并编辑入口函数 3、新建vxworks远端系统 4、显示系统起来之后进行加载.out 5、选择Debug模…

基于hadoop下的Kafka分布式安装

简介 Kafka是一种分布式流处理平台,它具有高吞吐量、可扩展性、可靠性、实时性和灵活性等优点。它能够支持每秒数百万条消息的传输,并且可以通过增加节点来增加吞吐量和存储容量。Kafka通过将数据复制到多个节点来实现数据冗余和高可用性,即使…

Linux脚本awk命令

目录 一. awk命令简介 1. awk版本 2. awk与vim的区别 3. awk与sed的区别 4. awk工作原理 5. awk格式 6. awk常用选项 二. awk基础用法 1. awk基础用法 2. BEGIN和END语句块 3. 指定分隔符 4. 首尾关键字 三. awk内置变量 1. FS变量 2. OFS变量 3. RS变量 4. NF…

代码随想录算法训练营第五十三天 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划

目录 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划 1143.最长公共子序列 题目链接:1143. 最长公共子序列 (1)dp[ i ][ j ] 表示 text1 前 i 个元素、text2 前 j 个元素的最长公共子序列的长度; (2&a…