【Android Studio】的矢量绘图【pathData】详解

目录:

  • 例子老师:
  • 一、基础知识:
    • 1、命令和常数:
    • 2、绝对坐标和相对坐标:
  • 一、落笔命令
    • 命令Mx,y和mx,y(大小写绝对和相对)
  • 二、画直线
    • 命令Lx,y和lx,y(大小写绝对和相对)
  • 三、画曲线
    • 1、椭圆轮廓命令:Ax,y 角度 0/1 0/1 x1,y1
    • 2、一个控制点的曲线命令:Q/qx1,y1 x终,y终
    • 3、(常用)两个控制点的曲线命令:`C/c`x1,y1 x2,y2 x终,y终

例子老师:

M13,9
V3.5
L18.5,9
M6,2
C4.89,2 4,2.89 4,4
V20
A2,2 0,0 0,6 22
H18
A2,2 0,0 0,20 20
V8
L14,2
H6
Z
1、M13,9:将当前点移动到坐标 (13, 9)。这是路径的起始点。
2、V3.5:从当前点垂直向下绘制一条直线到坐标 (13, 3.5)// 其中的13使用前一个点的x,向下画是因为3.5<9(上一个坐标的y)
3、L18.5,9:从上一步的终点绘制一条直线到坐标 (18.5, 9)4、M6,2:将当前点移动到坐标 (6, 2)。这是一个新的路径的起始点。
5、C4.89,2 4,2.89 4,4:从当前点开始,绘制一条三次贝塞尔曲线,
	控制点1(4.89, 2),控制点2(4, 2.89),终点为 (4, 4)6、V20:从上一步的终点垂直向下绘制一条直线到坐标 (4, 20)7、A2,2 0,0 0,6 22:绘制一个椭圆弧,参数为 (2, 2)。
	弧的起点为上一步的终点,终点为坐标 (6, 22)8、H18:从上一步的终点水平向右绘制一条直线到坐标 (18, 22)9、A2,2 0,0 0,20 20:绘制一个椭圆弧,参数为 (2, 2)。
	弧的起点为上一步的终点,终点为坐标 (20, 20)10、V8:从上一步的终点垂直向上绘制一条直线到坐标 (20, 8)11、L14,2:从上一步的终点绘制一条直线到坐标 (14, 2)12、H6:从上一步的终点水平向左绘制一条直线到坐标 (6, 2)13、Z:将当前路径闭合,即从当前点绘制一条直线到路径的起始点。

绘制过程:
在这里插入图片描述绘制结果图:
在这里插入图片描述
为什么是倒立的?因为真实绘图过程采用的坐标是:
在这里插入图片描述区别就是,y方向倒过来了

一、基础知识:

1、命令和常数:

  • 其实你完全可以把命令和函数当成一种东西的两种不同形式:
  • 名称+参数
  • 这里的参数可有可无

2、绝对坐标和相对坐标:

  • 绝对坐标(x,y)等价于(x+0,y+0),可理解成相对于原点(0,0)的相对偏移量。
  • 相对坐标(x,y)等价于(x1+x,y1+y),是相对于某点(x1,y1)的相对偏移量。
  • 从上面可以看出,不论是绝对还是相对,都需要一个参考量。
  • 只不过绝对坐标是一个一开始就默认的参考量,是一个常量。
  • 而相对坐标则是在运动过程中看情况选取的一个参考量,是一个变量。
  • 什么时候用绝对:
    • 绝对坐标的优势就是非常明确,明确表示该坐标是坐标系上的某点时,能够让你一眼看出位置所在。所以平常我们用绝对坐标比较多,比如(10,10),你就能直接找出坐标是(10,10)的位置。
  • 什么时候用相对:
    • 相对坐标的优势是善于变化,比如当你从中国走去美国,当你走到日本的时候你想计算你还有多长路程可以到美国,这时候你只需要计算日本和美国的距离即可。而不需要计算起点到终点。
    • 也就是说,相对坐标可以忽略起点,只考虑当前和未来

大写表示绝对坐标(相对于原点x=0,y=0),其实就是一种特殊的相对坐标
小写表示相对坐标(相对于上一点x=x1,y=y1的偏移量)

一、落笔命令

命令Mx,y和mx,y(大小写绝对和相对)

  • 这两个命令都是【提笔到某点】的意思。
  • 大写Mx,y 后面的坐标表示坐标(x,y)是一个绝对坐标
  • 小写mx,y 后面的坐标表示坐标(x,y)是一个相对坐标

二、画直线

命令Lx,y和lx,y(大小写绝对和相对)

  • 这两个命令都是【从当前笔的位置直线移动到某点(x,y)】的意思

  • 注意:很多人都以为这是画直线的,确实有画直线的功能,但是仅仅靠它却不能实现画直线。意思就是说,它只是画直线的多种工具的其中一种而已。所以,其实你理解成【画直线轮廓】还比较恰当。

  • 画直线的步骤:

  • 1、用L/l命令画直线轮廓(矩形):M0,0 L5,0 l0,1 L0,1

  • 这里需要注意的是,小写的L(l)和数字1非常像,所以一定要区分,一般数字1的左上角都是45°的尖角,而字母l最多是平角。在这里插入图片描述

  • 2、给轮廓涂色:
    在这里插入图片描述

  • 也就是说,画直线其实是先画矩形,然后再往矩形里面填充颜色,直线的粗细由矩形的宽决定。下面给出在Android Studio中使用的案例:
    在这里插入图片描述

  • 最后一个注意点:关于颜色填充的问题,一般而言,都是往一个封闭的图形中填充的。后面实践的时候再详细讲解这个问题。

三、画曲线

1、椭圆轮廓命令:Ax,y 角度 0/1 0/1 x1,y1

如果让你画一个椭圆,你会怎么画?
1、确定起点(从哪一个点开始画)
2、顺时针画还是逆时针画

  • 参数解释:加粗部分很重要

  • 1、第一个其实不是坐标,而是长半轴x1和短半轴y1的组合。

  • 2、0表示不旋转,你还可以根据需要选择90度等等

  • 3、1表示长弧度,0表示短弧度,一般用1即可

  • 4、0表示左逆时针,1表示左顺时针。

  • 5、最后一个坐标是指移动起始坐标,也就是开始画的坐标。起始直接放(1,0)即可,没什么多大用处。

  • 最后说明:注意绝对坐标和相对坐标不要搞混了。大写绝对,小写相对。

  • 首先你应该先了解椭圆的相关知识:
    大概如下图:在这里插入图片描述

  • 如何绘制:
    A/a(坐标1)——0/旋转角度——0/1—— 0/1 ——(1,0)
    如图,下面两个椭圆我们只改变了顺时针和逆时针。在这里插入图片描述

2、一个控制点的曲线命令:Q/qx1,y1 x终,y终

  • 两个坐标:控制坐标(x1,y1)终点坐标(x2,y2)
  • 关于起始坐标:当前笔的位置
  • 如图,其中黄色部分是我加上去的解释。在这里插入图片描述
  • 规律:起点或者终点离参考点(即控制坐标)越近,曲线就越直。
  • 相反,越远,曲线就越曲。
  • 在这里插入图片描述

3、(常用)两个控制点的曲线命令:C/cx1,y1 x2,y2 x终,y终

比如

C
4.89,2 //控制点1(在这个点给一点拉力让直线变弯曲)
4,2.89 //控制点2
4,4// 终点
  • 参数的三个坐标:(x1,y1)(x2,y2) (x终,y终)
  • 关于起始坐标:当前笔的位置

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统——LVS-DR群集部署及拓展

目录 引言 1.LVS的工作模式及其工作过程 2.列举出LVS调度算法 3.LVS调度常见算法&#xff08;均衡策略&#xff09; 3.1固定调度算法:rr&#xff0c;wrr&#xff0c;dh&#xff0c;sh 3.2动态调度算法:wlc&#xff0c;lc&#xff0c;lblc 4.LVS三种工作模式区别 一、I…

逆向实战33——某东登录参数与流程分析(包含滑块)

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6Ly9wYXNzcG9ydC5qZC5jb20vbmV3L2xvZ2luLmFzcHg/UmV0dXJuVXJsPWh0dHBzJ…

CSS极速入门

CSS介绍 什么是CSS? CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式. CSS能够对网页中元素位置的排版进行像素级的精确控制,实现美化页面的效果.能够做到页面的样式和结构分离. CSS可以理解为"东方四大邪术"的化妆术. 对页面展示进行化妆. 基本语法规…

PCM会重塑汽车OTA格局吗(2)

目录 1.概述 2. PCM技术视角下的OTA 3.小结 1.概述 上一篇文章&#xff0c;我们着重讲解了OTA的概述内容&#xff0c;和意法半导体推出的跨域融合MCU的四大特征&#xff0c;其中就包含了OTA技术。 他们针对OTA做了比较创新的设计&#xff0c;在总的可用memory容量不变情况…

Ansys Zemax | 如何在OpticStudio中建模DMD(MEMS)

附件下载 联系工作人员获取附件 什么是DMD/ MEMS 下图显示了一个DMD设备&#xff0c;它单独倾斜的微镜组成。镜子通常被称为像素。 如何在OpticStudio中建模DMD 这些设备可以在序列或非序列模式下建模。 如何计算单个像素/镜子的旋转 本节将说明如何设置单个像素的旋转。像…

FEP样品瓶透明聚四氟乙烯取样瓶

一、产品介绍 FEP试剂瓶&#xff0c;也叫FEP取样瓶、特氟龙样品瓶等&#xff0c;主要用于痕量分析、同位素检测&#xff0c;ICP-MS/OES/AAS分析等高端实验。本底值低&#xff0c;金属元素铅、铀含量小于0.01ppb,无溶出与析出。 常用尺寸&#xff08;ml&#xff09;&#xff1…

2024大厂Java面试最火问题,1200页文档笔记

前言 ⽂章有点⻓&#xff0c;请耐⼼看完&#xff0c;绝对有收获&#xff01;不想听我BB直接进⼊⾯试分享&#xff1a; 准备过程蚂蚁⾦服⾯试分享拼多多⾯试分享字节跳动⾯试分享最后总结个人所得&#xff08;供大家参考学习&#xff09; 当时我⾃⼰也准备出去看看机会&#…

七、链表问题(上)

160、相交链表&#xff08;简单&#xff09; 题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个…

引领测试开发新风向:模型驱动测试的魔力

测试开发是软件开发周期中至关重要的一个环节&#xff0c;而模型驱动测试作为一种新颖的测试方法&#xff0c;为测试开发带来了新的思路和技术。本文将探讨如何利用模型驱动测试优化测试开发流程&#xff0c;提高软件质量和开发效率。 模型驱动测试在测试开发中的应用价值 模型…

计算机三级——网络技术(综合题第一题)

笔记 标准分类的IP地址&#xff1a; 类别地址范围实际可用范围说明A类0~1271.0.0.1~126.255.255.2540代表任何地址&#xff0c;127为回环测试地址B类128~191128.1.0.0~191.254.0.0128.0.0.0和191.255.0.0为保留ipC类192~223192.0.1.0~223.255.254.0192.0.0.0和223.255.255.0…

java多线程编程(四)-----线程池

一.线程池的介绍 java中的池是非常重要的思想方法&#xff0c;比如内存池&#xff0c;进程池&#xff0c;连接池&#xff0c;常量池等等。本篇重点介绍java中的线程池。这里的这些池的概念都是一样的&#xff0c;比如做饭的时候&#xff0c;有烧水&#xff0c;切菜&#xff0c…

大数据开发-Hadoop之HDFS高级应用

文章目录 HDFS回收站HDFS的安全模式定时上传数据至HDFSHDFS的高可用和高扩展HDFS写数据过程源码剖析 HDFS回收站 HDFS会为每个用户创建一个回收站目录:/user/用户名/.Trash/回收站中的数据都会有一个默认的保存周期&#xff0c;过期未恢复则会被HDFS自动彻底删除默认情况下HDF…

用友-UFIDA-NC saveDoc.ajax 存在任意文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

【投稿优惠|优质会议】【主题广范|见刊快】2024年艺术设计与公共管理国际学术会议(ICADPM 2024)

【投稿优惠|优质会议】【主题广范|见刊快】2024年艺术设计与公共管理国际学术会议(ICADPM 2024) 2024 International Conference Art and Design and Public Management 一、【会议简介】 会议主题为“艺术设计与公共管理的融合与创新”&#xff0c;将涵盖多个子主题&#xff…

罐区自动防爆气象站的功能优势

TH-FBCQX1(FB01)罐区自动防爆气象站在现代工业安全中扮演着至关重要的角色。其独特的设计和强大的功能确保了罐区在易燃易爆环境中的安全&#xff0c;同时提供了精准的气象数据&#xff0c;为企业提供了有力的决策支持。以下是罐区自动防爆气象站的主要功能优势&#xff1a; 防…

2024年Java社招面试题,字节跳动算法工程师面试总

前言 Spring让我们可以更快&#xff0c;更轻松&#xff0c;更安全地进行Java编程。Spring对速度&#xff0c;简单性和生产率的关注使其成为世界上最受欢迎的Java框架。 像阿里巴巴&#xff0c;亚马逊&#xff0c;谷歌&#xff0c;微软等在内的所有科技巨头对Spring都有很大的…

ubuntu_定制文件系统[2]-清理日志log

1.问题现象 系统长时间运行, 产生大量的系统日志 ubuntu/debian 系统日志如下 /var/log$ du -sh * 31M syslog # syslog日志 61M syslog.1 2.5G journal/ # systemd service日志 当日志文件过大, 硬盘空间占用100%时, 导致各种异常 命令按tab补全无响应服务/进程启动异常服务…

一文搞懂所有常见数据结构

一&#xff0c;概念 计算机只能处理0和1&#xff0c;计算机能把0和1转换成电路中的信号来计算&#xff0c;这个就是计算机的本质。 bit 比特 bit就是计算对数据存储的最小单元&#xff0c;只有两个值0和1&#xff0c;简写为b。 - byte 字节 8个bit1个byte字节&#xff08;8位一…

「经验」在博途中 是否可以在 LAD与STL 语言之间进行切换

用惯了STEP7&#xff0c;准确来说是SIMATIC Manager进行编程开发的同学&#xff0c;在转战TIA portal后&#xff0c;通常会经历一段“晦涩”的过度期&#xff0c;包括指令库的微小变动、工作界面的大改等等。 又比如&#xff1a;“在博途中&#xff0c;怎么快速切换LAD与STL语…

小白跟做江科大51单片机之AT24C02数据存储

1.导入Delay、key、LCD1602相关文件 2.控制逻辑 以I2C去写入&#xff0c;用AT24C02包装好&#xff0c;main调用即可 3.编写I2C代码 看着这六个状态编 图1 开和关 图2 发送一个字节 图3 接收一个字节 图4 接收和发送应答 #include <REGX52.H> sbit I2C_SCL P2^1; sbi…