CGContextRef用法
1、简介Quartz。Quartz 是主要的描画接口,支持基于路径的描画、抗锯齿渲染、渐变填充模式、图像、颜色、坐标空间变换、以及PDF 文档的创建、显示、和分析。UIKit 为Quartz 的图像和颜色操作提供了Objective-C 的封装。Core Animation 为很多UIKit 的视图属性声明的动画效果提供底层支持,也可以用于实现定制的动画。在调用您提供的drawRect:方法之前,视图对象会自动配置其描画环境,使您的代码可以立即进行描画。作为这些配置的一部分,UIView
对象会为当前描画环境创建一个图形上下文(对应于CGContextRef 封装类型)用户坐标空间是您发出的所有描画命令的工作环境。该空间的单位由点来表示。设备坐标空间指的是设备内在的坐标空间,由像素来表示。缺省情况下,用户坐标空间上的一个点等于设备坐标空间的一个像素,这意味着一个点等于1/160英寸。然而,您不应该假定这个比例总是1:1。UIColor 对象提供了一些便利方法,用于通过RGB、HSB、和灰度值指定颜色值。您也可以使用Core Graphics 框架中的CGContextSetRGBStrokeColor
和CGContextSetRGBFillColor 函数来创建和设置颜色。路径轮廓可以用像CGContextStrokePath 这样的函数来画,即用当前的笔划颜色画出以路径为中心位置的线。路径的填充则可以用CGContextFillPath 函数来实现,它的功能是用当前的填充颜色或样式填充路径线段包围的区域。获取上下文,图形上下文是什么意思?CGContextRef context = UIGraphicsGetCurrentContext();2、简单的示例代码[cpp] view plaincopy//
画一个正方形图形 没有边框 CGContextSetRGBFillColor(context, 0, 0.25, 0, 0.5); CGContextFillRect(context, CGRectMake(2, 2, 270, 270)); CGContextStrokePath(context); // 写文字 CGContextSetLineWidth(context, 1.0); CGContextSetRGBFillColor (context, 1, 1, 1, 1.0); UIFont *font
= [UIFont boldSystemFontOfSize:11.0]; [@"fangyp" drawInRect:CGRectMake(40, 40, 80, 20) withFont:font]; // 画一条线 CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 0.5);//线条颜色 CGContextMoveToPoint(context, 20, 20); CGContextAddLineToPoint(context, 200,20); CGContextStrokePath(context);
// 画正方形边框 CGContextSetRGBStrokeColor(context, 1, 1.0, 1.0, 1.0); CGContextSetLineWidth(context, 2.0); CGContextAddRect(context, CGRectMake(2, 2, 270, 270)); CGContextStrokePath(context); // 画方形背景颜色 CGContextTranslateCTM(ctx, 0.0f, self.view.bounds.size.height);
CGContextScaleCTM(ctx, 1.0f, -1.0f); UIGraphicsPushContext(ctx); CGContextSetLineWidth(ctx,320); CGContextSetRGBStrokeColor(ctx, 250.0/255, 250.0/255, 210.0/255, 1.0); CGContextStrokeRect(ctx, CGRectMake(0, 0, 320, 460)); UIGraphicsPopContext();