问题标签 [nsbezierpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
415 浏览

objective-c - 在 nsbezierpath 上检测鼠标

我是一名初级开发人员,我有这个带有自定义视图的单窗口 Mac 应用程序。在该自定义 ceix 中,我定义了多个 nsbezierpath。每个 nsbezierpath 代表我地图的一个区域,因此它们根本不是矩形。

我想要的是一种检测鼠标何时进入 nsbezierpath 的方法,以便我可以显示鼠标悬停的区域的名称。

我似乎找不到从哪里开始,有什么想法吗?

感谢您调查我的问题

0 投票
2 回答
510 浏览

objective-c - NSBezierPath containsPoint: 路径未关闭时过于敏感

我对 containsPoint 方法有疑问。我画了一些盒子和盒子之间的连接器。连接器基本上是一条曲线,基于单个 curveToPoint:controlPoint1:controlPoint2 调用。当我现在尝试用鼠标选择这条曲线/路径时,这很难做到。containsPoint: 方法似乎非常敏感。我试图把线画得更大(setLineWidth:),但这似乎没有帮助。

有什么想法我需要做不同的事情吗?

0 投票
1 回答
163 浏览

objective-c - 重绘 NSBezierPath

这就是我用贝塞尔路径绘制类似弹出窗口的方式。BOOLEAN bAbajo 使绘图窗口指向上方。如果不是 bAbajo,它指向上方:

在第一次调用 drawRect 时,一切正常,绘图按照 bAbajo 布尔值的方式进行。之后,如果我用 bAbajo 的相反值再次调用 drawRect,则执行正确的代码(bAbajo 具有预期值,通过断点调试我可以看到它正在执行 drawRect 内的正确代码),但窗口是未使用新的 NSBezierPath *path 更新。有什么帮助吗?

0 投票
1 回答
122 浏览

objective-c - NSBezierPaths 数组在保存时返回“plist 不能包含 CFType”错误

我有一个 NSBezierPath 对象数组,它们基本上代表了用户在我的基本绘图应用程序中所做的所有笔画。但是,当尝试在 dataOfType:error: 中创建 NSData 对象(包含数组的 plist)时,应用程序给了我错误:

(属性列表不能包含“CFType”类型的对象)

但是,断点显示我的数组不包含 CFType:

…等等。我怀疑 CFTypes 和 NSBezierPaths 之间存在某种联系,但我不太明白。我应该如何保存我的阵列?

0 投票
1 回答
223 浏览

objective-c - NSBezierPath 对象似乎正在绘制可变线宽

好的,所以我正在尝试绘制一个虚线框,它被细分为我要放置内容的部分。这是我的代码:

这包含在我的自定义视图的 drawRect 方法中,因此dirtyRect 是一个等效于视图边界的 NSRect。变量 header 指的是 superview 中的另一个视图,我将这些线的位置作为其基础。

这是这段代码实际绘制的屏幕截图(显然标签除外):

如您所见,除非我们正在处理一种非常不幸的视觉错觉,我对此表示怀疑,否则盒子中包含的分隔线似乎比盒子的轮廓更厚。我已将路径对象的 lineWidth 明确设置为 3,所以我不确定这是为什么。我将非常感谢可以提供的任何建议。

0 投票
1 回答
773 浏览

cocoa - 使用 NSBezierPath 绘制不同的线宽?

我想创建一个可以用数位板绘制的矢量对象,并将尊重来自笔的压力信息(通过适当地增加/减少线宽)。现在我知道如何从 NSEvent 中获取压力信息,但当然 NSBezierPath 不支持不同的线宽。

所以我试图通过计算曲线末端的垂直线并将它们与同一条曲线连接起来,生成一条贝塞尔路径,它是我的线的轮廓。它几乎适用于我的单个曲线段的小测试项目:

https://github.com/uliwitness/WideningBezierPathTest

但这有一个大问题:线条在中间变细到几乎没有 2 个像素(它应该只从 32 变为 8)。有谁知道我将如何调整控制点,使曲线部分的两条线的距离大致相同?

在此处输入图像描述

有人有想法吗?建议?有用的文章?

0 投票
0 回答
102 浏览

objective-c - appendBezierPath 样式为第二条路径

我有 2 个 bezierPath。在第一条路径上,我绘制网格。我处理鼠标事件并在第一条路径上绘制新路径。我使用 appendBezierPath,没关系,但是第二条路径的样式不复制。Cocoa 使用第一个路径样式。如何以新样式附加新的贝塞尔路径。例如,我绘制黑色网格,我想在第二条路径中绘制红色圆圈。

升级版:

0 投票
1 回答
712 浏览

objective-c - NSString 到 NSBezierPath 一些标准字体的奇怪字形

我从 NSAttributedString 中获取单个字符的字形,然后使用 NSBezierPath 获取appendBezierPathWithGlyphs:count:inFont:并最终将扁平路径点输出到 NSArray(请参见下面的代码)以在 Quartz Composer 中使用 OpenGL 显示它们。

对于某些 NSFonts,包括标准字体(American Typewriter、Baskerville、...),字母完全错误(见下图)。

说我正在使用法语键盘和语言可能很重要。

用宋体 与巴斯克维尔 有人知道这种行为的解释吗?有没有办法用这些字体找到正确的路径

0 投票
1 回答
560 浏览

macos - NSBezierPath appendBezierPathWithArcFromPoint Wont Draw

I am attempting to draw and arc using "appendBezierPathWithArcFromPoint" but when run, it doesn't draw the arc. The "lineToPont" works and other "NSBezierPath" commands work. Can anyone please help by telling me what I am doing wrong. I have done quite a bit of serching with no clear answer. I am using MAC OS 10.9.2 and XCode 5.1. Below is the snipet of code. Thank You.

0 投票
1 回答
610 浏览

wpf - 在定义三次贝塞尔曲线时,有没有办法测试是否存在包含多个 Y 值的 X 值?

我们正在尝试创建一个用于校准硬件的曲线编辑器程序。因此,贝塞尔曲线似乎是人们最容易使用的 UI。但是,贝塞尔曲线的问题在于,可以创建一条曲线,其中特定 X 有多个 Y 值,反之亦然。

现在我知道我可以将控制点 (P1, P2) 约束到由锚点 (P0, P3) 定义的区域,这将阻止创建 S,但它也限制了其他有效曲线。

我想知道是否有一些测试可以运行,而不是手动走曲线,你可以判断你的曲线是否有 S 形弯曲,如果有,拒绝该曲线。

顺便说一句,这是针对跨平台应用程序的,因此 WPF 和 NSBezierCurve 是关键字。