简笔画项目总结: ios绘图机制 & 实现记录笔迹功能

简介:

简笔画的项目是从暑期8月份开始的,差不多9月多的时候已经有出版,修修改改拖到现在才算能结项目. 现在来总结有点晚了,一些体会早忘记了,但我还是尽力回忆一些自己认为有用的东西记录一下。 

1、故事板。我在上个项目项目总结:华南师范大学校园开发教育android客户端总结 中谈到了故事板,就是项目的设计图。因为这次的项目系统较为复杂,逻辑连贯性不强,这就考验设计故事板的人的写故事板的能力。其实故事板就是你要完全理解整个应用依赖的东西,所以故事板写得清晰合理的话,项目也会进行得较为顺利。这次的故事板有很多细节没有交代清楚,好多东西都需要后来的讨论才最终确定下来,这虽说是无可避免的但是能减少就减少吧。

2、ios绘图机制:因为简笔画项目主要就是一个绘图软件,所以总结一些ios的绘图是必须的。   

https://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html#//apple_ref/doc/uid/TP40010156-CH14-SW1

可参考上面的官方文档。

ios提供了2种绘图方案:

1,采用iOS的核心图形库:Quartz, Core Animation, and UIKit

2,采用OpenGL ES。

这次项目是用第一种,OpenGL更多的是应用于游戏场景中。

Quartz类库是画画的主要类库,提供了基于路径画图、反锯齿渲染、渐变填充、图像、色彩、坐标空间转换和PDF文档的一些操作。

UIKit提供划线、Quartz images和颜色操作的objective-C 封装。

Core Animation:提供了UIKit的的底层支持,也可以用来实现自定义动画。

 

The UIKit Graphics System

1、画图主要在drawRect:中进行,但你不能主动去调用它,它只能被系统本身调用,我们只能通过setNeedsDisplay or setNeedsDisplayInRect: 通知系统更新绘图,系统之后会自行去调用drawRect。

2、Graphics Contexts:Conceptually, a graphics context is an object that describes where and how drawing should occur, including basic drawing attributes such as the colors to use when drawing, the clipping area, line width and style information, font information, compositing options, and so on。从定义可以看出,Graphics Contexts可以理解成一个画板,画板上可以定义一些基本的画图元素。每个UIVIew都会创建。

3、坐标。

上图是用户坐标、视图坐标、硬件坐标的关系。但我们更关心的是ios接口给我们的坐标系统:2种坐标系统

upper-left-origin coordinate system (ULO)  and  lower-left-origin coordinate system (LLO)

关于坐标变换的可以参考iphone:坐标变换 。

4、画图。

说了这么多,究竟在ios上如何实现画图呢?

 

复制代码
-(void)drawRect:(CGRect)rect{
         CGContextRef ref=UIGraphicsGetCurrentContext();//拿到当前被准备好的画板。在这个画板上画就是在当前视图上画
         CGContextBeginPath(ref);//这里提到一个很重要的概念叫路径(path),其实就是告诉画板环境,我们要开始画了,你记下。
         CGContextMoveToPoint(ref, 0, 0);//画线需要我解释吗?不用了吧?就是两点确定一条直线了。
         CGContextAddLineToPoint(ref, 300,300);
         CGFloat redColor[4]={1.0,0,0,1.0};
         CGContextSetStrokeColor(ref, redColor);//设置了一下当前那个画笔的颜色。
         CGContextStrokePath(ref);//告诉画板,对我移动的路径用画笔画一下。
}
复制代码

 

什么简单的画了一条线,其实画画的过程都差不多,有几个步骤:

1,拿到当前面板  UIGraphicsGetCurrentContext

2,开始画声明

3,画

4,提交画

主要在对Graphics Contexts做的那些修改上面:

 

具体内容自行查文档,这里不赘述。

5、View截图

复制代码
-(UIImage *)getImage
{
    UIGraphicsBeginImageContext(self.bounds.size);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *Img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return Img;
}
复制代码

 

 记录笔迹:

具体看我的另一篇blog:iphone:实现像DrawSomething类似的自动画图的动画效果

 

 

 

more :http://iosdeveloper.diandian.com/post/2011-12-29/16946271

 

本文转自老Zhan博客园博客,原文链接:http://www.cnblogs.com/mybkn/archive/2012/11/15/2772120.html,如需转载请自行联系原作者

相关文章
|
2月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
122 1
|
3月前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
22天前
|
存储 安全 数据安全/隐私保护
深入解析iOS 14隐私保护功能:用户数据安全的新里程碑
随着数字时代的到来,个人隐私保护成为全球关注的焦点。苹果公司在最新的iOS 14系统中引入了一系列创新的隐私保护功能,旨在为用户提供更透明的数据使用信息和更强的控制权。本文将深入探讨iOS 14中的几项关键隐私功能,包括App跟踪透明性、简化的隐私设置以及增强的系统安全性,分析它们如何共同作用以提升用户的隐私保护水平。
73 3
|
23天前
|
监控 搜索推荐 数据安全/隐私保护
深入探索iOS 14的隐私保护功能
本文将深入探讨iOS 14操作系统中的隐私保护功能,包括新的隐私指示器、应用程序跟踪透明度以及增强的隐私设置。我们将分析这些功能如何提高用户对个人数据的控制权,并讨论它们对应用开发者和广告行业的影响。
29 1
|
2月前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
56 3
|
3月前
|
IDE 开发工具 Android开发
安卓与iOS开发对比:平台选择对项目成功的影响
【9月更文挑战第10天】在移动应用开发的世界中,选择正确的平台是至关重要的。本文将深入探讨安卓和iOS这两大主要移动操作系统的开发环境,通过比较它们的市场份额、开发工具、编程语言和用户群体等方面,为开发者提供一个清晰的指南。我们将分析这两个平台的优势和劣势,并讨论如何根据项目需求和目标受众来做出最佳选择。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解每个平台的特性,并指导你做出明智的决策。
|
3月前
|
Java 开发工具 Android开发
安卓与iOS开发:平台选择对项目成功的影响
在移动应用开发的浩瀚宇宙中,安卓和iOS两大星系璀璨夺目,各自拥有独特的光芒。本文将穿梭于这两个平台之间,探讨它们在开发环境、用户群体、成本效益等方面的差异,以及这些差异如何影响一个项目的航向和终点。我们将从初学者的视角出发,逐步深入,揭示选择合适平台的重要性,以及如何根据项目需求做出明智的选择。无论你是即将启航的新手开发者,还是已经在这片星海中航行的老手,这篇文章都将为你提供有价值的导航信息。
63 2
|
3月前
|
Java 开发工具 Android开发
探索安卓与iOS开发的差异:平台选择对项目的影响
在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据着重要的位置。本文旨在深入探讨这两个平台在开发过程中的主要差异,包括编程语言、开发工具、用户界面设计、性能优化以及市场分布等方面。通过对比分析,我们将揭示平台选择如何影响项目规划、执行效率和最终成果,为开发者在选择适合自己项目需求的平台时提供参考依据。
|
4月前
|
IDE 开发工具 Android开发
探索安卓与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的广阔天地中,安卓和iOS两大平台各领风骚,引领着技术进步的潮流。本文旨在深入剖析这两个平台在开发过程中的关键差异点,包括编程语言、开发工具、用户界面设计以及市场分布等方面。通过对比分析,我们不仅能更好地理解每个平台的独特优势,还能洞察这些差异如何影响项目决策和最终成果。无论你是开发者还是企业决策者,了解这些内容都将助你一臂之力,在选择适合自己项目的开发平台时做出更明智的决策。
|
4月前
|
IDE 开发工具 Android开发
探索iOS与安卓开发的差异:平台选择对项目成功的影响
【8月更文挑战第22天】在数字化时代,移动应用成为企业和个人展示创意、提供服务的重要工具。iOS和安卓作为两大主流平台,各自拥有独特的优势和限制。本文将深入探讨这两个平台在开发过程中的主要差异,以及这些差异如何影响项目规划、用户体验和市场策略。通过比较分析,旨在为开发者和企业决策者提供有价值的见解,帮助他们根据项目需求做出明智的平台选择。