[iOS]画线功能实现
2014-07-07 16:40
197 查看
制作iOS软件的画线功能无非就是使用 OpenGLES 或者 Quartz2D。当然OpenGLES和 QuartzCode 的功能远不止这些,网上有很多介绍。
全新的iOS7.0诞生,开始支持 OpenGLES 3.0,没去仔细研究(http://www.cocoachina.com/gamedev/gameengine/2012/0808/4556.html)。
如果想学习 OpenGLES 2.0 可以去看看这位大侠的博客 http://blog.csdn.net/kesalin/article/category/1288827。
我之前也有写一个OpenGLES 2.0 入门级别的Demo 有兴趣的可以看看 http://download.csdn.net/detail/qq232053394/5724343 。
如果要实现一个简单的画线(修改 color/alpha/width、橡皮擦) 的功能,其实Quartz2D已经足够了。
相对OpenGLES来说,Quartz2D使用起来简单很多,代码量也少很多,也更容易理解。同时内部集成了贝塞尔曲线的算法可以直接画出贝塞尔曲线(iOS3.2+)。(使用OpenGLES的时候是自己写的代码,算法用的是二次B样条曲线的算法)
DEMO: https://github.com/Liuyu710/Quartz2DDraw.git
题外话:此Demo的数据结构设计的扩展性不够,因为只是为了测试Quartz2D的实现绘图的功能,如果需要做比较完整的绘图模块,需要重新设计线条的数据结构。简单的说一下思路吧:具体情况具体分析吧,这里的思路只是一个设计雏形。
1. 设计一个protocol,绘制的通用属性,例如:线条颜色,宽度,透明度 等等;
2. 设计一个抽象类,这里主要是为了扩展性,如果需求中有绘制线条以外的Object,就比较容易扩展。
3. 设计一个线条的类,继承自2步骤的类,根据线条的特征提供接口,例如:生产方法,增加点的方法,绘制方法 等等;(参考NSString的设计)
4. 设计线条的子类(类似CFString),既实际的线条(通过统一的线条类的生产方法创建的实际对象)。在这里根据每一种线条的个性特征完成接口实现,例如:贝塞尔曲线和折线的绘制方法就不同。
5. 到这里就可以很容易的用双数组设计Undo Redo操作了。
全新的iOS7.0诞生,开始支持 OpenGLES 3.0,没去仔细研究(http://www.cocoachina.com/gamedev/gameengine/2012/0808/4556.html)。
如果想学习 OpenGLES 2.0 可以去看看这位大侠的博客 http://blog.csdn.net/kesalin/article/category/1288827。
我之前也有写一个OpenGLES 2.0 入门级别的Demo 有兴趣的可以看看 http://download.csdn.net/detail/qq232053394/5724343 。
如果要实现一个简单的画线(修改 color/alpha/width、橡皮擦) 的功能,其实Quartz2D已经足够了。
相对OpenGLES来说,Quartz2D使用起来简单很多,代码量也少很多,也更容易理解。同时内部集成了贝塞尔曲线的算法可以直接画出贝塞尔曲线(iOS3.2+)。(使用OpenGLES的时候是自己写的代码,算法用的是二次B样条曲线的算法)
DEMO: https://github.com/Liuyu710/Quartz2DDraw.git
题外话:此Demo的数据结构设计的扩展性不够,因为只是为了测试Quartz2D的实现绘图的功能,如果需要做比较完整的绘图模块,需要重新设计线条的数据结构。简单的说一下思路吧:具体情况具体分析吧,这里的思路只是一个设计雏形。
1. 设计一个protocol,绘制的通用属性,例如:线条颜色,宽度,透明度 等等;
2. 设计一个抽象类,这里主要是为了扩展性,如果需求中有绘制线条以外的Object,就比较容易扩展。
3. 设计一个线条的类,继承自2步骤的类,根据线条的特征提供接口,例如:生产方法,增加点的方法,绘制方法 等等;(参考NSString的设计)
4. 设计线条的子类(类似CFString),既实际的线条(通过统一的线条类的生产方法创建的实际对象)。在这里根据每一种线条的个性特征完成接口实现,例如:贝塞尔曲线和折线的绘制方法就不同。
5. 到这里就可以很容易的用双数组设计Undo Redo操作了。
相关文章推荐
- 【IOS功能实现】简单画线
- IOS简单的画线功能实现
- iOS-实现最简单的画线功能 . 转
- iOS-实现最简单的画线功能 . 转
- iOS-实现最简单的画线功能
- ios 自由批注功能的实现 如何实现在view上自由绘图 bitmap Quartz 2D 缓存位图
- 利用IOS提供的tclsh脚本功能实现快速测试
- ios实现条形码扫描功能
- 在Windows电脑中实现iPhone4 iOS 4.2.1 AirPrint(无线打印)功能
- ios实现条形码扫描功能
- iOS 应用实现条形码扫描功能的方法
- 利用silverlight中Path类实现跟随鼠标画线功能
- 在IOS中使用KeychainItemWrapper保存用户名和密码实现记住密码功能
- iOS 录音功能的实现
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- ios实现条形码扫描功能
- ios 画图 绘图的实现(自由批注中视图的subview的实现)bitmap Quartz 2D 缓存位图 自由批注功能的实现 如何实现在view上自由绘图 提供源码
- 应用内实现 iOS 通讯录查询与删除功能的代码
- 【IOS】扩展UIImageViewEx实现:手势移动,旋转,缩放(附带一个收缩的文字标签功能)