NSBezierPath 到 NSImage 以避免 CoreAnimation

发布于 2024-10-01 09:04:25 字数 835 浏览 3 评论 0原文

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

[myView setWantsLayer:YES];

In order to draw a GUI element via NSBezierPath.此行是必需的,否则当用户在相邻(且重叠)的 NSTextField 中键入内容时,myView 的内容会颤抖。

我发现调用 CoreAnimation 会加载 OpenGL 框架,但不会卸载它。 参见这个问题。

我我想我可以通过将 NSBezierPath 绘制到 NSImage 然后显示 NSImage 来代替 NSBezierPath 来解决这个问题,但我还没有找到一个可以显示我的来源怎么办呢?


编辑:

我应该注意,我想在显示 NSBezierPath 之前保存此内容 - 因此解决方案 将现有视图绘制到 NSImage 没有用。


问题:

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

I have an app that currently has this line:

[myView setWantsLayer:YES];

In order to draw a GUI element via NSBezierPath. This line is required, otherwise when the user types in an adjacent (and overlapping) NSTextField, the contents of myView shudders.

I discovered that calling CoreAnimation loads the OpenGL framework, but does not unload it. See this question.

I think I can get around this by drawing the NSBezierPath to NSImage and then to display the NSImage in lieu of the NSBezierPath, but I haven't found a single source that shows me how to go about this.


Edit:

I should note that I want to save this BEFORE The NSBezierPath is displayed - so solutions that draw an existing view to an NSImage are not useful.


Question:

Can someone point me in the right direction for converting NSBezierPath to an NSImage?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫弦 2024-10-08 09:04:25

你可以将任何东西直接绘制到 NSImage 中,并且可以创建一个空白的 NSImage。因此,创建一个大小为路径边界大小的图像,平移路径,使其位于图像的原点,然后将焦点锁定在图像上,绘制路径,然后解锁焦点。

You can draw anything directly into an NSImage, and you can create a blank NSImage. So, create an image whose size is the size of the bounds of the path, translate the path so that it's at the origin of the image, and then lock focus on the image, draw the path, and unlock focus.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文