1

我正在创建一个绘图应用程序并遇到了问题。我有一系列曲线;每条曲线都有一个点数组,每个点都保持它的颜色、粗细和坐标。

当我drawRect:被调用时,我会重新绘制这个数组中的所有曲线。问题是这个数组变得越来越大,应用程序变慢了。

我的想法是,在每次重绘结束时,将当前上下文保存为图像,释放曲线数组,然后在下一次重绘时,使用该图像作为背景。最终,我根本不需要曲线数组,只需要一个正在进行的曲线数组。这可能吗?或者也许还有另一种方法可以做到这一点?

4

2 回答 2

0

您可以将视图的相应层渲染为图像以在下一次迭代中更新。当然,在这种情况下使用UIImageViewyourViewToSaveAsImage 会更好。在这种情况下,您可以更轻松地完成此过程......

UIView *view = yourViewToSaveAsImage;

UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
于 2012-08-07T00:03:14.863 回答
0

路径仅包含有关点的信息,因此如果您想跟踪渲染的变化,您需要一个单独的对象列表。

我通过创建一个NSArray*我自己的自定义对象来实现这一点,其中包括以下字段:an NSBezierPath*(用于捕获点并简化绘制线段)、CGPathDrawingMode用于线段的 a 以及有关颜色和线条大小的信息。

然后,当我绘制时,我遍历数组的元素,设置上下文的当前颜色,并根据我配置该段的方式调用当前元素strokefill当前元素。NSBezierPath*

我也想知道是否有更快的方法,但这种方法肯定效果很好。

于 2012-08-06T23:53:42.043 回答