如何在 WPF 中仅绘制 Bezier 曲线的一部分?

致命的东西

我需要绘制小的弯曲箭头。我可以算出箭头的角度,好吧,我将使用贝塞尔曲线来定义路径段。但是,我真正想做的是计算起点和终点之间的不可见曲线路径,并且仅在起点之后和终点之前的一小段距离处描边路径。

这将在起点和终点的任何对象之间留下合适的间隙。有什么建议么?

Mike 'Pomax' Kamermans

箭头通常没有非常混乱的曲线,它们具有非常平滑的曲线,t靠近两端值表现为纯三次方(因为贝塞尔函数在起始坐标处由 (1-t)³ 支配,在开始坐标处由 t³ 支配)终点坐标),所以在终点附近,您可以“估计”您需要插入的“t”值,以通过使用立方根获得靠近需要的坐标:

// let's say we want "10% away from the end"
desiredDistance = 0.9;

// then the guestimate for the "t" value is simply the cube root of 0.9
probablyT = Math.pow(desiredDistance, 1/3);

// and the point we want to cut at is at that "t" value
cutPoint = get(probablyT, pts);

// and we can split up the curve into two segments at that "t" value
curves = split(probablyT, pts);

// and then keep the segment we need for the arrow
arrowcurve = curves[0];

请参阅http://jsbin.com/dovodibaze/edit?js,输出如何接近终点附近的距离(以及这显然仅在您猜测的终点附近有效=)

使用该probablyT值,您可以拆分原始曲线,绘制从该拆分中获得的“第一条”曲线(覆盖原始 t=0 到 t=near-the-end 段),然后在原始端点绘制箭头.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在WPF中为控件模板的一部分制作动画?

来自分类Dev

如何仅编码URL的一部分

来自分类Dev

如何仅渲染Sprite的一部分

来自分类Dev

如何仅加粗段落的一部分?

来自分类Dev

如何在SVG中绘制线的一部分?

来自分类Dev

在WPF中仅刷椭圆的一部分

来自分类Dev

在WPF Datagrid行中仅显示图像的一部分?

来自分类Dev

如何在python中仅读取一部分字符串列表

来自分类Dev

如何在javascript中仅旋转画布的一部分?

来自分类Dev

如何在PHP中仅回显数据的一部分?

来自分类Dev

如何在Java中仅下载txt文件的一部分?

来自分类Dev

如何在SQL中仅显示VARCHAR的一部分

来自分类Dev

如何在纯 JS 中仅操作 JSON 对象的一部分?

来自分类Dev

如何在 boost::asio 中仅读取 udp 套接字的一部分?

来自分类Dev

如何在 ASP/VBScript 中仅提取“For Each”循环的一部分

来自分类Dev

Wpf:如何根据百分比为矩形的一部分着色?

来自分类Dev

如何在熊猫中取一列的一部分与另一列的一部分匹配?

来自分类Dev

如何在CAShapeLayer上仅填充形状的一部分

来自分类Dev

如何使用ActiveRecord仅选择存储在Postgres中的json的一部分

来自分类Dev

如何仅刷新MVC 5中“索引”页面的一部分?

来自分类Dev

如何从仅知道字符串一部分的列表中删除元素?

来自分类Dev

如何仅删除Firebase中已发布数据的一部分

来自分类Dev

Ember.js:如何仅显示模板中的一部分模型?

来自分类Dev

如何使用VLC仅播放视频中的一部分

来自分类Dev

如何仅打印每行中带有特定字符的星星的一部分

来自分类Dev

如何在Oracle中替换列中字符串的一部分

来自分类Dev

PHP中的Regex:如何在最后一部分URL中获取单词?

来自分类Dev

在 WPF 中滚动时冻结画布的一部分?

来自分类Dev

如何在Emacs Lisp中捕获字符串的一部分?

Related 相关文章

  1. 1

    如何在WPF中为控件模板的一部分制作动画?

  2. 2

    如何仅编码URL的一部分

  3. 3

    如何仅渲染Sprite的一部分

  4. 4

    如何仅加粗段落的一部分?

  5. 5

    如何在SVG中绘制线的一部分?

  6. 6

    在WPF中仅刷椭圆的一部分

  7. 7

    在WPF Datagrid行中仅显示图像的一部分?

  8. 8

    如何在python中仅读取一部分字符串列表

  9. 9

    如何在javascript中仅旋转画布的一部分?

  10. 10

    如何在PHP中仅回显数据的一部分?

  11. 11

    如何在Java中仅下载txt文件的一部分?

  12. 12

    如何在SQL中仅显示VARCHAR的一部分

  13. 13

    如何在纯 JS 中仅操作 JSON 对象的一部分?

  14. 14

    如何在 boost::asio 中仅读取 udp 套接字的一部分?

  15. 15

    如何在 ASP/VBScript 中仅提取“For Each”循环的一部分

  16. 16

    Wpf:如何根据百分比为矩形的一部分着色?

  17. 17

    如何在熊猫中取一列的一部分与另一列的一部分匹配?

  18. 18

    如何在CAShapeLayer上仅填充形状的一部分

  19. 19

    如何使用ActiveRecord仅选择存储在Postgres中的json的一部分

  20. 20

    如何仅刷新MVC 5中“索引”页面的一部分?

  21. 21

    如何从仅知道字符串一部分的列表中删除元素?

  22. 22

    如何仅删除Firebase中已发布数据的一部分

  23. 23

    Ember.js:如何仅显示模板中的一部分模型?

  24. 24

    如何使用VLC仅播放视频中的一部分

  25. 25

    如何仅打印每行中带有特定字符的星星的一部分

  26. 26

    如何在Oracle中替换列中字符串的一部分

  27. 27

    PHP中的Regex:如何在最后一部分URL中获取单词?

  28. 28

    在 WPF 中滚动时冻结画布的一部分?

  29. 29

    如何在Emacs Lisp中捕获字符串的一部分?

热门标签

归档