NSBezierPath到NSImage以避免CoreAnimation

时间:2010-11-08 18:54:19

标签: cocoa core-animation core-graphics bezier nsimage

我有一个目前有这一行的应用程序:

[myView setWantsLayer:YES];

为了通过NSBezierPath绘制GUI元素。此行是必需的,否则当用户键入相邻(且重叠)的NSTextField时, myView 的内容会发抖。

我发现调用CoreAnimation会加载OpenGL框架,但不会卸载它。 参见 this question.

我想我可以通过将 NSBezierPath 绘制到 NSImage 然后显示NSImage来代替NSBezierPath来解决这个问题,但我还没有找到一个来源告诉我如何解决这个问题。


修改

我应该注意,我想在显示NSBezierPath之前保存它 - 所以draw an existing view to an NSImage没有用的解决方案。


问题:

有人能指出我将NSBezierPath转换为NSImage的正确方向吗?

1 个答案:

答案 0 :(得分:3)

您可以直接在NSImage中绘制任何内容,并可以创建一个空白的NSImage。因此,创建一个大小为路径边界大小的图像,转换路径使其位于图像的原点,然后将焦点锁定在图像上,绘制路径并解锁焦点。