ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

VBA,Shapes.AddCurve SafeArrayOfPoints:=pts  画贝塞尔曲线

2021-01-02 19:57:25  阅读:399  来源: 互联网

标签:150 VBA Sub 曲线 贝塞尔 AddCurve Shapes 控制点 pts


 

1  Shapes.AddCurve SafeArrayOfPoints:=pts   贝塞尔曲线

  • https://docs.microsoft.com/zh-cn/office/vba/api/excel.shapes.addcurve
  • 由指定曲线的顶点和控制点的坐标对组成的数组。 您指定的第一个点是起始顶点, 接下来的两个点是第一段贝塞尔线段的控制点。 该曲线每增加一条线段,就要为其指定一个顶点和两个控制点。您指定的最后一个点是曲线的结束顶点。 请注意,必须指定的点数始终为 3n + 1,其中 n 为曲线的线段个数。
  • SafeArrayOfPoints:=pts 
  • 贝塞尔曲线
  • 起点,2控制点,2控制点 .....终点------好像必须是3n+1,比如4,7,10等等
  • 第2维只能是2?

 

1.1 贝塞尔曲线

https://www.zhihu.com/question/29565629

https://baike.baidu.com/item/%E8%B4%9D%E5%A1%9E%E5%B0%94%E6%9B%B2%E7%BA%BF/1091769?fr=aladdin

它通过控制曲线上的四个点(起始点、终止点以及两个相互分离的中间点)来创造、编辑图形。其中起重要作用的是位于曲线中央的控制线。这条线是虚拟的,中间与贝塞尔曲线交叉,两端是控制端点。移动两端的端点时贝塞尔曲线改变曲线的曲率(弯曲的程度);移动中间点(也就是移动虚拟的控制线)时,贝塞尔曲线在起始点和终止点锁定的情况下做均匀移动。注意,贝塞尔曲线上的所有控制点、节点均可编辑。这种“智能化”的矢量线条为艺术家提供了一种理想的图形编辑与创造的工具。


 

Sub t5()
Dim pts(1 To 4, 1 To 2) As Single
pts(1, 1) = 10
pts(1, 2) = 50

pts(2, 1) = 200
pts(2, 2) = 120

pts(3, 1) = 150
pts(3, 2) = 210

pts(4, 1) = 310
pts(4, 2) = 220

Worksheets("sheet4").Shapes.AddCurve SafeArrayOfPoints:=pts

End Sub

 

1.2 第2个贝塞尔曲线

 

Sub t6()
Dim pts(1 To 10, 1 To 2) As Single
pts(1, 1) = 10         '

pts(1, 2) = 50         '这种分类是错误的
pts(2, 1) = 200

pts(2, 2) = 120
pts(3, 1) = 150

pts(3, 2) = 210
pts(4, 1) = 310

pts(4, 2) = 220
pts(5, 1) = 110

pts(5, 2) = 280
pts(6, 1) = 190

pts(6, 2) = 220
pts(7, 1) = 150

pts(7, 2) = 210
pts(8, 1) = 310

pts(8, 2) = 220
pts(9, 1) = 110

pts(9, 2) = 280
pts(10, 1) = 190

pts(10, 2) = 210


Worksheets("sheet5").Shapes.AddCurve SafeArrayOfPoints:=pts

End Sub

 

1.3 根据这个原理,控制4个点,果然可以画出想要的这种波浪曲线

  • 起点: 和终点在同一个高度
  • 终点:X大,Y=Y起点
  • 控制点1:X前进,Y往上
  • 控制点2:X继续前进,Y往下

 

 

Sub t5()
Dim pts(1 To 4, 1 To 2) As Single
pts(1, 1) = 0           '第1个点的X坐标
pts(1, 2) = 150         '第1个点的Y坐标

pts(2, 1) = 150         '第2个点的X坐标
pts(2, 2) = 0

pts(3, 1) = 200         '第3个点的X坐标
pts(3, 2) = 300

pts(4, 1) = 400
pts(4, 2) = 150

Worksheets("sheet4").Shapes.AddCurve SafeArrayOfPoints:=pts

End Sub

标签:150,VBA,Sub,曲线,贝塞尔,AddCurve,Shapes,控制点,pts
来源: https://blog.csdn.net/xuemanqianshan/article/details/112115825

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有