我想创建一个可以用数位板绘制的矢量对象,并将遵循来自笔的压力信息(通过适本地增加/减少线宽)。现在,我知道如何从NSEvent中获取压力信息,但是当然,NSBezierPath不支持变化的线宽。
因此,我试图通过计算曲线两端的垂直线并将它们与同一条曲线连接起来,以生成一条Bezier路径作为我的线的轮廓。它几乎可以在我的小测试项目中针对单个曲线段工作:
https://github.com/uliwitness/WideningBezierPathTest
但这有一个大问题:该线在中间变细到几乎只有2个像素(应该只从32变到8)。有谁知道我将如何调整控制点,以使弯曲部分中的线的两个边缘之间的距离大致相同?
有人有主意吗?有什么建议吗?有用的文章?
最佳答案
多亏其他人的建议,我才设法将一些有用的东西拼凑在一起。我已将更改提交到存储库,但是如果您想查看旧代码,可以回溯一些修订。这是我现在要做的:
如果要将其用于打印或在HiDPI下使用,则可能不得不考虑贝塞尔曲线路径的“平坦度”,但是对于1倍屏幕显示来说,它看起来不错。
关于cocoa - 使用NSBezierPath绘制变化的线宽?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22270360/