Core Graphics 绘图

转自:http://blog.csdn.net/richard_rufeng/article/details/25146489

第一、UIKit:cocoa touch 框架,高层次的框架,允许开发人员创建视图、窗口、按钮和其他UI组件。同时将一些低级别的api引入到易于使用的高级别API中。

Quartz 2D:IOS上绘图的主要引擎;UIKit上就使用Quartz。

Core Graphics:它支持图形上下文、加载图像、绘制图像,等等。

Core Animation 帮助开发者在IOS上实现动画的框架

第二、不同的手机有不同的像素即使是屏幕一样大的手机像素也不一样,开发人员在开发的时候执行相同的代码却要考虑不同的屏幕尺寸和分辨率,为此苹果引入了设备独立的绘图方法。开发者使用相应的api,用点代替像素来代替大小。这样针对同屏幕大小不同像素的手机就可以使用同一份代码了。

第三、使用Core Graphics来绘制简单图像 :  

drawAsPatternInRect:在矩形内绘制图像,图像不缩放,必要时将平铺 
drawAtPoint:在左上角位于CGPoint指定位置开始绘制图像 
drawAtPoint:blendMode:alpha:drawAtPoint的复杂版本,可以指定图片透明度等 
drawInRect:在CGRect内绘制图像,并相应的缩放 
drawInRect:blendMode:alpha:drawInRect的复杂版本 
- (void)drawRect:(CGRect)rect  
{  
    UIImage *img1 = [UIImage imageNamed:@"img"];  
    UIImage *img2 = [UIImage imageNamed:@"img1"];  
         UIImage *img3 = [UIImage imageNamed:@"img2"];  
     //这里使用了混合模式,正常和透明度为50%  
    [img1 drawAtPoint:CGPointMake(0, 0) blendMode:kCGBlendModeNormalalpha:.5];  
    [img2 drawInRect:CGRectMake(50, 50, 150, 150)];  
    [img3 drawInRect:CGRectMake(140, 140, 150, 150)]; 
}  

第四、构造路径:

    一系列点放在一起,构成了一个形状。一系列形状放在一起,构成了一个路径。通过Core Graphics可以很容易地管理路径。路径属于正在绘制他们的图形上下文。

常用的函数:

  CGPathCreateMutable 过程 :创建一个类型为CGMutablePathRef的可变路径,并返回其句柄。

  CGPathMoveToPoint 过程:在路径上移动当前画笔的位置到一个点,这个点由CGPoing类型的参数指定

CGPathAddLineToPoint 过程:从当前的画笔位置向指定位置绘制线段。

CGContextAddPath过程:添加一个路径到图形上下文,准备用于绘图。

CGContextDrawPath过程:在图形上下文中绘制给出的路径。

CGPathRelease过程:释放为路径句柄分配的内存。

CGPathAddRect过程:向路径添加一个矩形。矩形的边界由一个CGRect结构体指定。

这里有三个重要的绘图方法,你可以让 CGContextDrawPath过程执行他们。

  KCGPathStroke 使用当前选定的描边颜色为路径描边

KCGPathFill使用当前选定的填充颜色填充路径所包围的区域。

KCGPathFillStroke组合描边和填充

第五、绘制矩形:

 CGPathAddRect是Core Graphic中用于路径的过程之一,它可以让你把矩形作为路径的一部分来绘制。

为形状添加阴影:

使用core graphics 绘制阴影非常简单。图形上下文是支撑阴影的元素,这意味着你需要对上下文应用阴影、接着绘制需要阴影的形状,从后从上下文移除阴影。在Core Grahics中,我们可以使用下面两个过程 对图形上下文应用阴影:

CGContextSetShadow过程:

此过程将创建黑色或灰色阴影,它接受三个参数:

1.需要应用阴影的图形上下文。

2.偏移量,由CGSize类型的值指定。偏移量相对于将要应用阴影的形状的右边和底部,x偏移量越大,阴影更向形状的右边延伸。Y偏移量越大,阴影更向形状的底部延伸。

3.要应用到阴影的模糊值,它被指定为一个浮点值(CGFloat). 指定为0.0f将获得平整的阴影。这个值越高得到的阴影更加模糊。

CGContextSetShadowWithColor 过程:除了增加最后一个CGColorRef类型的参数用于设置阴影的颜色,其它参数上一个过程一模一样,

当阴影被设置后,如果不删除 阴影会应用到其它路径当中,为了避免这种情况发生,我们将在应用阴影之前保持图形上下文状态,然后在需要删除阴影效果时恢复原先的状态。一般来说,保存和恢复图形上下文状态并不只限于阴影。恢复图形上下文的状态会恢复一切(填充颜色、字体、线条粗细等)回到之前你为他们设置的值。通过CGContextSaveGState过程保存图形上下文的状态,通过CGContextRestoreGState过程恢复到以前的状态。

第六、创建和绘制渐变:

Core Graphics允许开发者创建两种类型的渐变:线性的和径向的,线性渐变以某种颜色从一点开始,以另一种颜色在其它点结束。

为了创建一个线性渐变,你要调用CGGradientCreateWithColorComponents函数。这个函数的返回值是一个新的类型为CGGradientRef的渐变,这是一个句柄。一旦你不在使用渐变,你必须调用CGGradientRelease 过程,传入之前你从CGGradientCreateWithColorComponents获取到的渐变的句柄来释放资源。

CGCradientCreateWithColorComponents函数需要四个参数:

色彩空间:(Color Space)这是一个色彩范围的容器,类型必须是CGColorSpaceRef.对于这个参数,我们可以传入CGColorSpaceCreateDeviceRGB函数的返回值,它将给我们一个RGB色彩空间。

颜色分量的数组:这个数组必须包含CGFloat类型的红、绿、蓝和alpha值。数组中元素的数量和接下来两个参数密切。从本质来讲,你必须让这个数组包含足够的值,用来指定第四个参数中位置的数量。所以如果你需要两个位置位置(起点和终点),那么你必须为数组提供两种颜色

 位置数组,颜色数组中各个颜色的位置:此参数控制该渐变从一种颜色过渡到另一种颜色的速度有多快。

位置的数量:这个参数指明了我们需要多少颜色和位置。

创建好线性渐变后,我们将使用CGContextDrawLinearGradient过程在图形上下文中绘制,此过程需要五个参数:

Graphics context 指定用于绘制线性渐变的图形上下文。Axial gradient 我们使用CGGradientCreateWithColorComponents函数创建的线性渐变对象的句柄

start point 图形上下文中的一个CGPoint类型的点,表示渐变的起点。End Point表示渐变的终点。 Gradient drawing options 当你的起点或者终点不在图形上下文的边缘内时,指定该如何处理。你可以使用你的开始或结束颜色来填充渐变以外的空间。此参数为以下值之一:KCGGradientDrawsAfterEndLocation扩展整个渐变到渐变的终点之后的所有点 KCGGradientDrawsBeforeStartLocation扩展整个渐变到渐变的起点之前的所有点。0不扩展该渐变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值