问题标签 [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 投票
4 回答
5659 浏览

cocoa - 如何使用 NSBezierPath 获得 1 像素线?

我正在开发一个自定义控件。要求之一是画线。虽然这可行,但我注意到我的 1 像素宽的线条看起来并不像 1 像素宽的线条 - 我知道,它们不是真正的像素,但你知道我的意思。它们看起来更像是两三个像素宽。当我用 1 像素虚线和 2 像素间隙绘制虚线时,这一点变得非常明显。1 像素的虚线实际上看起来像细线而不是点。

我已经阅读了 Cocoa Drawing 文档,虽然 Apple 提到了 setLineWidth 方法,但将线宽更改为小于 1.0 的值只会使线条看起来更模糊而不是更细。

所以,我怀疑还有其他东西影响了我的线条的外观。

有任何想法吗?

0 投票
3 回答
429 浏览

objective-c - NSBezierPath 独特的线条

我正在制作一个简单的绘图应用程序并NSBezierPath用来绘制线条。我正在继承NSView。我需要制作一种方法,允许用户更改下一条路径的颜色和大小(因此用户按下一个按钮,然后他们下次绘制路径时它是指定的颜色/大小)但是现在当我尝试这样做会改变所有现有路径的颜色和大小。可以这么说,我怎样才能让它们“个体化”?这是我的代码:

所以我需要制作一个单独的 NSBezierPath 路径。

0 投票
1 回答
1529 浏览

cocoa - 使用 -setClip 方法在自定义视图上重绘插图 NSShadow

我有一个奇怪的问题,与这个问题的答案有关:

绘制插入 NSShadow 和插入描边

我将此代码用于自定义视图的 drawRect 方法。我有这个:

当我添加一个多行标签(我的自定义视图的同级或子级)时,问题就出现了。

当我的程序窗口失去焦点并且我回到它时,我的内部阴影/笔画变暗。似乎阴影叠加了。这很奇怪,因为如前所述,如果我的窗口只有这个自定义视图,它会很顺利。

如果我评论该行

阴影不再叠加,但我没有得到想要的圆角效果(类似于 NSBox)。

I tried what happens with a Push Button instead of a Multiline Label, and by losing / getting the window focus it has no problems, but when I click the button the shadow gets superimposed.

I find the problem is similar than here, but in Cocoa instead of Java:

Java setClip seems to redraw

Thanks for your help!

0 投票
1 回答
535 浏览

cocoa - NSView 中的 NSBezierPath 点动画

我在 Cocoa 中构建了一个自定义控件,它是使用 NSBezierPath 绘制的,我希望它在状态发生变化时改变形状(未使用状态 = 指向“看这里”边缘,使用状态 = 标准控制边缘)。

感觉就像我已经浏览了网络上提到的“NSBezierPath”和“Animation”,但没有运气。

在我破解一些 NSTimers 并编写自己的时间和路径点控件之前,有谁知道这是否可以使用 Core Animation 或类似方法?

0 投票
1 回答
1525 浏览

objective-c - 沿着 NSBezier 路径获取任何点

对于我正在编写的程序,我需要能够跟踪对象必须沿其行进的虚拟线(不是直线)。我想用它NSBezierPath来画线,但我找不到沿着线得到任何点的方法,我必须这样做才能沿着它移动对象。

任何人都可以建议一种方法来找到一个点NSBezierPath吗?如果那不可能,任何人都可以建议一种方法来执行上述操作吗?

0 投票
2 回答
1061 浏览

objective-c - 如何擦除用 NSBezierPath 绘制的东西?

我刚刚使用 NSBezierPath 创建了一条路径,并使用 [path fill] 将其绘制到视图上。我的问题是如何删除我绘制的内容?

一种可能的解决方案是使用背景颜色再次使用 [路径填充],但如果有背景图像而不是简单的背景颜色,这将不起作用。所以有人有什么想法吗?

0 投票
1 回答
684 浏览

objective-c - NSBezierPath 图

我无法弄清楚如何优化包含 NSBezierPath 的 NSView 的绘图。

让我试着解释一下我的意思。我有一个要绘制的由大约 40K 点组成的折线图。我掌握了所有要点,使用以下代码可以轻松绘制完整的图表:

所以现在我将整个图形存储在实际坐标中的 NSBezierPath 形式中,我可以描边。但是让我们假设现在我想尽可能快地显示添加一个时间点的图表。

我不想每次都画出整套点。如果可能的话,我想使用完整的图表并只可视化一小部分。假设我只想在同一帧中渲染前 1000 个点。是否有任何可能性(修改边界并最终以某种方式缩放路径)仅以正确的边界呈现图形的第一部分?

我无法获得结果,因为如果我修改边界,那么比例会改变,我无法解决线宽问题。

0 投票
1 回答
824 浏览

objective-c - NSTableView 圆角,如 UITableView 组

我正在尝试创建一个带有圆角的 NSTableView(很像 iOS 的Grouped表格视图样式)。然而,事实证明这是异常困难的。

我试过使用CALayers

它适用于NSView子类,但不适用于NSTableViewor NSScrollView

我也尝试过覆盖drawRect:,并使用 bezierPaths。

我没有在 s 上测试过这个方法NSView,但它对 s 不起作用NSTableView

我之前在 StackOverflow 上看到过一些“重复”的问题,但是他们无法提供令人满意的解决方案。

NSTableView 上的圆角有 1 个“正确”答案,看起来如此简单,因为提问者改变了他的目标。这个问题提示我尝试NSBezierPaths,但正如我所说,我似乎无法让该方法起作用。

NSTableView 圆角建议对 NSScrollView 进行子类化,但这同样对CALayers.

任何建议将不胜感激。我想得到一个明确的答案,不仅是为了我自己,也是为了后代。

0 投票
1 回答
1227 浏览

cocoa - 我可以使用 CALayer 来加速视图渲染吗?

我正在制作一个自定义 NSView 对象,该对象的某些内容经常更改,而某些内容的更改频率则要低得多。事实证明,变化较少的部分需要最多的时间来绘制。我想做的是在不同的层中渲染这两个部分,这样我就可以分别更新一个或另一个,从而避免我的用户出现缓慢的用户界面。

我该怎么做呢?我还没有找到很多关于这类事情的好教程,也没有人谈论在 CALayer 上渲染 NSBezierPaths。任何人的想法?

0 投票
2 回答
928 浏览

cocoa - NSBezierPath:如何反转剪辑路径?

我通过创建一个圆形NSBezierPath并将其添加到图形上下文的剪切区域中,在我的自定义视图的中心绘制一个圆形图像。这工作得很好,但我想知道是否可以提高绘制视图背景(圆形居中图像之外的区域)但反转此剪辑并执行背景绘制(NSGradient填充)的性能。

谁能建议一种反转剪辑路径的方法?