我正在创建一个绘图应用程序并遇到了问题。我有一系列曲线;每条曲线保持一个点阵列,每个点保持其颜色,厚度和坐标。
调用drawRect:
时,我会重绘此数组中的所有曲线。问题是这个数组变得越来越大,应用程序变慢了。
我的想法是,在每次重绘结束时,将当前上下文保存为图像,释放曲线数组,并在下次重绘时,使用该图像作为背景。最终,我根本不需要曲线数组,只是正在进行的曲线数组。这可能吗?或者也许有另一种方法可以做到这一点?
答案 0 :(得分:0)
路径仅包含有关点的信息,因此如果要跟踪渲染中的变化,则需要单独的对象列表。
我通过创建NSArray*
我自己的自定义对象来实现这一目标,其中包括以下字段:NSBezierPath*
(捕获点并简化绘制细分),CGPathDrawingMode
到用于细分,以及有关颜色和线条大小的信息。
然后当我绘制时,我迭代数组的元素,设置上下文的当前颜色,并在当前元素的stroke
上调用fill
或NSBezierPath*
,具体取决于我的方式配置该段。
我还想知道是否有更快的方法,但这种方法确实运作良好。
答案 1 :(得分:0)
您可以将视图的相应图层渲染为图像,以便在下一次迭代时更新。在这种情况下,最好使用UIImageView
作为yourViewToSaveAsImage。在这种情况下,您可以更轻松地完成此过程...
UIView *view = yourViewToSaveAsImage;
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();