如何将图形上下文中的绘图作为图像?
答案 0 :(得分:1)
如果其图形端口是CGBitmapContext,则可以从中创建图像。
但这不是你想要依赖的东西。如果上下文的图形端口不是 CGBitmapContext,那么你就搞砸了。而且,没有安全的方法来判断它是否是CGBitmapContext。
所以,实际上,您无法从NSGraphicsContext创建图像。
这导致了替代方案的问题。
如果它是一个纳入上下文的NSView,问题就解决了:你可以ask the view for a PDF of what it draws,并且(如果需要)从中创建一个图像。或者,将焦点锁定在视图上并从焦点视图创建NSBitmapImageRep。其中任何一个都不能在drawRect:
内部工作(后者可能有效,但我不相信它不会调用drawRect:
)。
如果您认为在drawRect:
中需要此图像以便将某些绘图加盖到多个位置,则有两种更好的解决方案:将绘图代码移动到另一种方法中,并在每次需要时调用它绘制它,或创建一个CGLayer,将图像绘制到其中,然后根据需要绘制CGLayer。重复绘制相同的东西是CGLayers的存在。