从NSGraphicsContext获取图像

时间:2010-10-07 13:35:58

标签: cocoa

如何将图形上下文中的绘图作为图像?

1 个答案:

答案 0 :(得分:1)

如果其图形端口是CGBitmapContext,则可以从中创建图像。

但这不是你想要依赖的东西。如果上下文的图形端口不是 CGBitmapContext,那么你就搞砸了。而且,没有安全的方法来判断它是否是CGBitmapContext。

所以,实际上,您无法从NSGraphicsContext创建图像。

这导致了替代方案的问题。

如果它是一个纳入上下文的NSView,问题就解决了:你可以ask the view for a PDF of what it draws,并且(如果需要)从中创建一个图像。或者,将焦点锁定在视图上并从焦点视图创建NSBitmapImageRep。其中任何一个都不能在drawRect:内部工作(后者可能有效,但我不相信它不会调用drawRect:)。

如果您认为在drawRect:中需要此图像以便将某些绘图加盖到多个位置,则有两种更好的解决方案:将绘图代码移动到另一种方法中,并在每次需要时调用它绘制它,或创建一个CGLayer,将图像绘制到其中,然后根据需要绘制CGLayer。重复绘制相同的东西是CGLayers的存在。