画圆弧方法

已知圆心坐标P,圆上一个点坐标A,A-P直线以圆心旋转角度x后,求新的A点坐标
P新.x = (A.x - P.x) cos((x/180)*PI) + P.x
P新.y = (A.x - P.x) sin((x/180)*PI) + P.y

 

<Path x:Name="test" Stroke="AliceBlue" StrokeThickness="4" Width="100" Height="100">
<Path.Data>
<GeometryGroup>
<PathGeometry Figures="M50,2 A48,48,0,1,1,49.99,2"/>
</GeometryGroup>
</Path.Data>
</Path>

1. 移动指令:Move Command(M):M 起始点  或者:m 起始点
比如:M 100,240或m 100,240
使用大写M时,表示绝对值; 使用小写m时; 表示相对于前一点的值,如果前一点没有指定,则使用(0,0)。

2. 绘制指令(Draw Command):
我们可以绘制以下形状:
(1) 直线:Line(L)
(2) 水平直线: Horizontal line(H)
(3) 垂直直线: Vertical line(V)
(4) 三次方程式贝塞尔曲线: Cubic Bezier curve(C)
(5) 二次方程式贝塞尔曲线: Quadratic Bezier curve(Q)
(6) 平滑三次方程式贝塞尔曲线: Smooth cubic Bezier curve(S)
(7) 平滑二次方程式贝塞尔曲线: smooth quadratic Bezier curve(T)
(8) 椭圆圆弧: elliptical Arc(A) 

绘制指令格式语法:

(1) 直线:Line(L)
格式:
L 结束点坐标 或: l 结束点坐标。
比如:L 100,100 或 l 100 100。坐标值可以使用x,y(中间用英文逗号隔开)或x y(中间用半角空格隔开)的形式。

(2) 水平直线  Horizontal line(H):绘制从当前点到指定x坐标的直线。
格式:H x值 或 h x值(x为System.Double类型的值)
比如:H 100或h 100,也可以是:H 100.00或h 100.00等形式。

(3) 垂直直线 Vertical line(V):绘制从当前点到指定y坐标的直线。
格式:V y值 或 v y值(y为System.Double类型的值)
比如:V 100或y 100,也可以是:V 100.00或v 100.00等形式。

(4) 三次方程式贝塞尔曲线 Cubic Bezier curve(C):通过指定两个控制点来绘制由当前点到指定结束点间的三次方程贝塞尔曲线。
格式:C 第一控制点 第二控制点 结束点 或 c 第一控制点 第二控制点 结束点
比如:C 100,200 200,400 300,200 或 c 100,200 200,400 300,200
其中,点(100,200)为第一控制点,点(200,400)为第二控制点,点(300,200)为结束点。

(5) 二次方程式贝塞尔曲线 Quadratic Bezier curve(Q):通过指定的一个控制点来绘制由当前点到指定结束点间的二次方程贝塞尔曲线。
格式:Q 控制点 结束点 或 q 控制点 结束点
比如:q 100,200 300,200。其中,点(100,200)为控制点,点(300,200)为结束点。

(6) 平滑三次方程式贝塞尔曲线: Smooth cubic Bezier curve(S):通过一个指定点来“平滑地”控制当前点到指定点的贝塞尔曲线。
格式:S 控制点 结束点 或 s 控制点 结束点
比如:S 100,200 200,300

(7) 平滑二次方程式贝塞尔曲线 smooth quadratic Bezier curve(T):与平滑三次方程贝塞尔曲线类似。
格式:T 控制点 结束点 或 t 控制点 结束点
比如:T 100,200 200,300

(8) 椭圆圆弧: elliptical Arc(A) : 在当前点与指定结束点间绘制圆弧。
A 尺寸 圆弧旋转角度值 优势弧的标记 正负角度标记 结束点
或:
a 尺寸 圆弧旋转角度值 优势弧的标记 正负角度标记 结束点
尺寸(Size): System.Windows.Size类型,指定椭圆圆弧X,Y方向上的半径值。
旋转角度(rotationAngle):System.Double类型。
圆弧旋转角度值(rotationAngle):椭圆弧的旋转角度值。 
优势弧的标记(isLargeArcFlag):是否为优势弧,如果弧的角度大于等于180度,则设为1,否则为0。 
正负角度标记(sweepDirectionFlag):当正角方向绘制时设为1,否则为0。 
结束点(endPoint):System.Windows.Point类型。

3. 关闭指令(close Command):用以将图形的首、尾点用直线连接,以形成一个封闭的区域。
用Z或z表示。

<Canvas Margin="123,0,10,22"><Path  Stroke="#FFE23838" StrokeThickness="5" Width="500" Height="800" StrokeDashArray="2 1" StrokeDashCap="Round"><Path.Data><GeometryGroup><PathGeometry Figures="M 100,10 A 100,100 0 0 0 200,10" /><PathGeometry Figures="M 100,50 A 100,100 0 1 0 200,50" /><PathGeometry Figures="M 100,450 A 100,100 0 1 1 200,450" /><PathGeometry Figures="M 100,500 A 100,50 45 1 0 300,500" /></GeometryGroup></Path.Data></Path></Canvas>

效果图  

 

转载于:https://www.cnblogs.com/xiefang2008/p/6782535.html

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

CAD绘圆弧命令

1.单击菜单栏&#xff0c;“绘图->圆弧。 2.单击绘图工具栏绘”圆弧命令”按钮。 3.在命令行中输入Arc&#xff0c;按回车键。 执行命令后&#xff0c;命令行将显示如下信息&#xff1a; 命令: Mx_Arc 指定圆弧的起点或 [圆心(C)]: 指定圆弧的第二个点或 [圆心(C)]: 指定…

CAD制图教程:CAD软件中怎么画圆弧梯段?

在使用国产CAD软件绘制建筑CAD图纸的过程中&#xff0c;有些时候会需要画圆弧梯段。但是有些小伙伴刚开始进行CAD制图初学入门学习不知道在浩辰CAD建筑软件中该如何绘制直线梯段&#xff1f;下面就让小编来给大家介绍一下国产CAD制图软件——浩辰CAD建筑软件中绘制圆弧梯段的相…

chatgpt赋能python:Python中未被定义的SEO

Python中未被定义的SEO 介绍 Python是一种广泛使用的高级编程语言。它被广泛应用于Web开发、游戏开发、数据科学、机器学习等领域。虽然Python已经成为许多企业的首选语言之一&#xff0c;但是有一些Python特有的SEO问题仍然没有被完全解决。Python中未被定义的SEO问题会导致…

chatgpt赋能python:Python中画笔颜色的函数介绍

Python中画笔颜色的函数介绍 在Python中&#xff0c;我们可以使用turtle模块来绘制图形&#xff0c;其中画笔颜色是非常重要的一部分。画笔颜色可以决定图形的风格和色调&#xff0c;是图形表现的关键因素之一。Python中提供了几种方法来设置画笔颜色。 1. 设置画笔颜色的函数…

基于深度学习的高精度野生动物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度野生动物检测&#xff08;水牛、犀牛、斑马和大象&#xff09;识别系统可用于日常生活中或野外来检测与定位野生动物目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的野生动物目标检测识别&#xff0c;另外支持结果可视…

神舟战神t8和z8区别 神舟战神t8和z8哪个好

战神 T8-DA5NP&#xff1a;i5-12500H、RTX 3060、16G512GB SSD 售价 7199 元&#xff0c;显存为 6GB&#xff0c;功耗最高可达 140W&#xff0c;支持独显直连&#xff0c;这点十分加分。比不少友商不支持独显直连的笔记本要好&#xff0c;它们在混合显卡工作模式时帧率比独显直…

美图app sig分析

本文案例是对美图秀秀app的sig参数和client_session参数生成分析。 案例环境:美图版本9.3.5 、工具Jadx、夜神安卓7、Frida APP包名: com.mt.mtxx.mtxx 文章目录 接口分析源码分析Frida hooksig生成Frida Flask PRCclient_session分析接口分析 抓包,搜索接口和参数如下: …

美图T9 怎么打开heic文件,怎么查看hei

对于一直使用安卓的用户来说&#xff0c;会感觉到 heic 比较陌生&#xff0c;小编使用的是美图 T9 &#xff0c;在接收到 heic 格式的时候&#xff0c;发现是打不开的&#xff0c;不管是通过微信还是 QQ &#xff0c;都是显示不支持&#xff0c;那美图 T9 …

js常见面试笔试题

一.js实现距离最近的回文数 给定一个整数 n &#xff0c;你需要找到与它最近的回文数&#xff08;不包括自身&#xff09;。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输入: "123" 输出: "121" function findNearestPalindrome…

【MySQL】MySQL 字段为 NULL 的5大坑

数据准备 建立一张表 数据如下&#xff1a; 1.count 数据丢失 count(*) 会统计值为 NULL 的行&#xff0c;而 count(列名) 不会统计此列为 NULL 值的行。 select count(*),count(name) from person; ----------------------- count(*) | count(name)10 | 8-------…

chatgpt赋能python:Python模块安装方法全解析

Python模块安装方法全解析 Python是一种功能强大的编程语言&#xff0c;拥有大量的开源库&#xff0c;这些库是在各种应用程序中使用的重要组件&#xff0c;它们能加速开发过程。不管你是初学者、中级者还是高级者&#xff0c;总会遇到需要安装第三方库的情况。但是安装库是一…

如何在码云上面上传本地项目

一. 首先&#xff0c;我暂时不知道 如何直接从本地上传&#xff0c;所以提供的是一种笨方法&#xff0c;首先建立一个空仓库。 二. 在码云上面下载一个空仓库 三. 进入到相关目录&#xff0c;也就是存放项目的目录&#xff0c;打开该路径的cmd&#xff0c; 将复制好的网址 打…

chatgpt赋能python:Python中浮点数的表示方法

Python中浮点数的表示方法 在Python中&#xff0c;浮点数是一种数字类型&#xff0c;用于表示带有小数点的数值。但是&#xff0c;由于计算机在表示浮点数时存在精度限制&#xff0c;因此需要特别注意。本文将介绍Python中浮点数的表示方法及其可能导致的错误。 Python中浮点…

使用git上传本地项目到码云

因为老师要求要将近期的项目全部提交到码云上&#xff0c;故将上传方法记录下来&#xff0c;以便以后随时查阅使用。 一、git bash 首先进入项目文件中右击&#xff0c;选择git bash git init #初始化 git add . …

码云上传文件步骤

前期准备 1.码云账号&#xff0c;在官网注册https://gitee.com/ 2.安装git&#xff0c;这里有Git-2.17.0&#xff0c; 链接&#xff1a;https://pan.baidu.com/s/13cj10gRGE-kfFQllqZEXkg 提取码&#xff1a;wr47 创建码云仓库 在右上角创建 然后在这里填仓库名字和路径&am…

本地代码怎么上传到码云?

针对之前操作过码云&#xff0c;但是一段时间之后忘记改怎么操作码云的小伙伴 准备操作 第一步打开官网&#xff1a; 点击当前页的创建之后&#xff0c;跳转到这一页&#xff1a; 里面有用的就是ssh&#xff0c;将ssh里面的地址复制 然后打开项目所在目录&#xff1a;比如我的…

如何把项目上传到码云平台?

(1)登录“码云账号” (2)创建项目,也叫创建仓库。如图: (3)在本地创建一个文件夹,暂时命名为b。 (4)把码云项目克隆一份

如何将本地项目上传到码云和github,超简单

文章目录 如何将项目上传到码云和github1.找到你要上传的项目目录下1.1在路径上输入cmd&#xff0c;回车1.2输入bash.exe1.3复制你的远程库地址&#xff0c;使用 git remote add gitee [url]1.4 git remote -v 查看远程库 2.使用git add . 添加目录下的文件到本地库中3.使用git…