gpt4 book ai didi

objective-c - 缓存 NSView 上下文

转载 作者:行者123 更新时间:2023-12-03 17:13:59 25 4
gpt4 key购买 nike

我正在尝试存储 NSView 当前上下文并稍后将其再次绘制到 NSView。我想知道最快、最有效的方法是什么?

最佳答案

您可以将内容绘制到 NSImage 并稍后重新绘制图像,但您需要在需要时使缓存无效(这取决于您的 View 的作用)。

示例:

@interface SOCacheView : NSView

@end

@implementation SOCacheView
{
NSImage *_cache;
}

- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];

if (!_cache) [self prepareImage];

[_cache drawAtPoint:NSZeroPoint fromRect:self.bounds operation:NSCompositeSourceOver fraction:1.0];
}

- (void)prepareImage
{
_cache = [[NSImage alloc] initWithSize:self.bounds.size];
[_cache lockFocus];

// do the drawing here...

[[NSColor blueColor] setFill];
NSRectFill(NSMakeRect(0, 0, NSWidth(self.bounds)/2, NSHeight(self.bounds)));
[[NSColor redColor] setFill];
NSRectFill(NSMakeRect(NSWidth(self.bounds)/2, 0, NSWidth(self.bounds)/2, NSHeight(self.bounds)));

[_cache unlockFocus];
}

要使缓存的绘图无效,只需将 _cache 设置为 nil

Here's a sample project给你玩😉

关于objective-c - 缓存 NSView 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12527863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com