当我们在iPhone SDK中绘制时如何“撤消”?
我有一个绘图应用程序,我想在其中实现UNDOfunction,以便用户可以撤消已完成的最后一个绘图笔画。
你可以让我知道如何做到这一点?
谢谢
首先请说明你用什么来画画。 你使用任何API或核心graphics框架进行绘图。
以下是我find的链接中的一些方法。
做法:
-
在touchesEnded上,将图像保存为应用沙箱,名称如.. 1.png,2.png等,然后在“撤消”variables上加上一个计数。 当用户按下撤消时,只需加载旧的图像库的计数。 (这是我可以粗略的想到的,但还没有经过编码,但听起来很简单的代码)。
-
NSUndoManager。
希望这有助于任何其他人想要做到这一点。
参考链接:
http://www.iphonedevsdk.com/forum/iphone-sdk-development/46996-drawing-app-how-do-undo.html
干杯
-(void)undoButtonClicked { if([pathArray count]>0){ UIBezierPath *_path=[pathArray lastObject]; [pathArray removeLastObject]; [bufferArray addObject:_path]; [self setNeedsDisplay]; } }
这取决于很多东西,你必须更具体地说明你正在使用的绘图方法,例如,如果你正在谈论“铅笔”笔画,而你的绘图方法使用石英来绘制一些东西,而你只对最后一个笔画或改变,你总是可以保存当前的graphics上下文(图像上下文或其他),并在出现撤消的情况下显示。 如果你想允许多个笔画被撤消,你将不得不把它们添加到一个数组,所以你可以重新绘制到撤消。 如果你使用开放的话,那么它也是不同的。
没有iPhone的具体
像素canvas:
您的select是保留整个canvas或由笔画覆盖的区域的快照。 撤销操作将popup您的撤消堆栈并重新绘制您所堆放的缓冲区。
不方便的是正确调整撤销限制以避免占用内存。
vector绘图:
这是非常微不足道的….
我简单的解决scheme是,1.存储CGPath。 2.您可以使用清晰混合模式绘制path来清除它。
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear);
- 在初始化时将parameter passing给自定义类
- iOS的OpenGL使用glTexImage2D的参数,使UIImage?
- 如何在iOS编程中使用pList
- 如何在iOS sdk中使用任何仪器检测心率?
- iOS(Iphone / iPad / iPod Touch)设备有多less内存?
- 在input时调整包含UITextView的UITableViewCell
- Objective-C / iOS:为自定义视图创build子类UITableViewController
- NSFetchRequest setPropertiesToGroupBy:返回匹配的所有实体吗?
- UISegmentedControl图像突出显示在iOS6中的错误