这两个函数目前是我的瓶颈。我正在使用非常大的位图。
我如何才能提高他们的性能?
发布于 2011-07-08 22:29:38
您可以缓存在第一次绘制之前创建的位图的较小版本,然后只需绘制缩小的样本,而不是完整的1500万像素的东西。
然后,再次确保您只绘制必要的内容,即在'drawRect:(NSRect) rect‘中仅在rect内部绘制(除非绝对必要)。并且尽量不要在该方法之外执行绘图。
发布于 2011-07-09 08:43:51
如果您正在绘制大的背景图像,其中的内容在前景中移动,请考虑使用图层支持的NSView,添加一个图层并设置其背景图像。然后,您可以在背景层上方的其他层(或层支持的NSViews)中绘制内容,视图将永远不需要重新绘制背景图像,因为它存储在GPU的纹理内存中。您当前的图像对于单个CALayer来说太大了(CALayer限制为2048 x 2048的最大OpenGL纹理大小),因此您可能需要将其拆分为瓦片。
否则,正如@iolo所提到的,您应该确保只重新绘制视图中真正需要更新的部分。
https://stackoverflow.com/questions/6625654
复制相似问题