VBA,Shapes.AddCurve SafeArrayOfPoints:=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
相關文章
- 貝塞爾曲線
- 貝塞爾曲線基礎部分
- Flutter 自定義元件之貝塞爾曲線畫波浪球Flutter元件
- Android-貝塞爾曲線實現水波紋動畫Android動畫
- 貝塞爾曲線理解與應用
- canvas bezierCurveTo() 三次貝塞爾曲線Canvas
- 如何理解並應用貝塞爾曲線
- canvas 二次貝塞爾曲線quadraticCurveTo()Canvas
- 使用二階貝塞爾曲線實現新增購物車動畫動畫
- 貝塞爾曲線(Bezier curve)實現節點連線
- 貝塞爾曲線原理、推導及Matlab實現Matlab
- 自定義View合輯(6)-波浪(貝塞爾曲線)View
- webGL入門-四階貝塞爾曲線繪製Web
- Flutter 實戰 - 用貝塞爾曲線畫一個帶文字的波浪球 WidgetFlutter
- 一個貝塞爾曲線編輯工具(2d)
- canvas基礎[二]教你編寫貝塞爾曲線工具Canvas
- 【Flutter高階玩法】 貝塞爾曲線的表象認知Flutter
- 貝塞爾曲線的css實現——淘寶加入購物車基礎動畫CSS動畫
- SVG之Path路徑詳解(二),全面解析貝塞爾曲線SVG
- Android日常學習:OpenGL 實踐之貝塞爾曲線繪製Android
- 自定義View合輯(8)-跳躍的小球(貝塞爾曲線)View
- 白話經典貝塞爾曲線及其在 Android 中的應用Android
- Android繪圖最終篇之大戰貝塞爾三次曲線Android繪圖
- 【乾貨滿滿】貝塞爾曲線(Bézier curve)——什麼神仙操作
- Flutter BottomAppBar 自定義路徑 + 貝塞爾曲線實現閒魚底部導航FlutterAPP
- 用貝塞爾曲線自己寫的一個電量顯示的控制元件控制元件
- iOS動畫專題·UIView二維形變動畫與CAAnimation核心動畫(transform動畫,基礎,關鍵幀,組動畫,路徑動畫,貝塞爾曲線)iOS動畫UIViewORM
- Android教你一步一步從學習貝塞爾曲線到實現波浪進度條Android
- CSS transition animation的使用(內含貝賽爾曲線詳解)CSS
- Android 窗簾(Curtain)效果四之賽貝爾曲線優化AndroidAI優化
- 你知道嗎, CoreGraphics繪圖系統和Bezier貝塞爾曲線座標系的順時針方向是相反的!繪圖
- 【flutter高階玩法】貝塞爾實戰1 - 波浪Flutter
- canva畫曲線圖效果
- delphi 畫圖表,曲線圖
- Android動畫曲線庫AndroidEasingFunctionsAndroid動畫IdeaFunction
- canvas小畫板--(1)平滑曲線Canvas
- Flutter 動畫曲線Curves 效果一覽Flutter動畫
- canvas進階——如何畫出平滑的曲線?Canvas