Quartz2D的学习2

  1 - (void)drawRect:(CGRect)rect {
  2
  3     NSLog(@"drawRect");
  4
  5     //获取图形的上下文
  6     CGContextRef context = UIGraphicsGetCurrentContext();
  7     //    CGContextMoveToPoint(context, 20, 100);
  8     //    CGContextAddLineToPoint(context, 200, 200);
  9     //    CGContextStrokePath(context);
 10     //  [self drawTriangle:context];
 11     //  [self drawRectWithContext:context];
 12     //  [self drawCircle:context];
 13     //  [self drawArc:context];
 14     //  [self drawCurve:context];
 15     //  [self drawEffect:context];
 16     //  [self drawFont:context];
 17     //  [self drawImage:context];
 18     //  [self clipImage:context];
 19  }
 20
 21
 22 //10。切割图片
 23 -(void)clipImage:(CGContextRef)context
 24 {
 25     //切成圆形的
 26     CGContextAddEllipseInRect(context, CGRectMake(20, 20, 50, 50));
 27     //切割操作
 28     CGContextClip(context);
 29
 30     CGContextFillPath(context);
 31
 32     UIImage *image = [UIImage imageNamed:@"account_candou"];
 33
 34     [image drawAtPoint:CGPointMake(20, 20)];
 35
 36
 37 }
 38
 39 //9.绘制图片
 40 -(void)drawImage:(CGContextRef)context
 41 {
 42     //绘图是有先后顺序关系的
 43     UIImage *image = [UIImage imageNamed:@"account_candou"];
 44     //[image drawAtPoint:CGPointMake(100, 100)];
 45     //可以放大或缩小
 46     //[image drawInRect:CGRectMake(100, 100, 200, 200)];
 47     //平铺图片
 48     [image drawAsPatternInRect:CGRectMake(100, 100, 200, 200)];
 49
 50
 51 }
 52
 53 //8.绘制文字
 54 -(void)drawFont:(CGContextRef)context
 55 {
 56
 57     NSString *str = @"老罗忘八端,不干人事";
 58
 59     NSDictionary *dict = @{NSFontAttributeName:[UIFont systemFontOfSize:30],NSForegroundColorAttributeName:[UIColor orangeColor]};
 60     //1.调用字符串的drawAtPoint方法能够将文字直接绘制到view上
 61    // [str drawAtPoint:CGPointMake(10, 100) withAttributes:dict];
 62     //2.
 63     [str drawInRect:CGRectMake(10, 100, 300, 100) withAttributes:dict];
 64 }
 65
 66
 67 //7.画特效
 68 -(void)drawEffect:(CGContextRef)context
 69 {
 70     //矩形
 71     CGContextAddRect(context, CGRectMake(100, 100, 150, 150));
 72     //线宽
 73     CGContextSetLineWidth(context, 10);
 74     //线的颜色
 75     CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
 76     //填充颜色
 77     CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
 78     //设置透明度
 79     CGContextSetAlpha(context, 0.5);
 80
 81     /**
 82      *   设置阴影
 83      *
 84      *  @param context#> <#context#> 上下文
 85      *  @param offset#>  <#offset#> 相对于图的偏移
 86      *  @param blur#>    <#blur#>
 87      *
 88      *  @return <#return value description#>
 89      */
 90     CGContextSetShadow(context, CGSizeMake(20, 20), 10);
 91
 92     //框的填充和内部填充同时显示
 93     CGContextDrawPath(context,kCGPathFillStroke);
 94     //CGContextStrokePath(context);
 95 }
 96
 97
 98
 99
100 //6.画曲线
101 -(void)drawCurve:(CGContextRef)context
102 {
103     //曲线起点
104     CGContextMoveToPoint(context, 20, 400);
105     /**
106      *  <#Description#>
107      *
108      *  @param c#>   <#c#> 上下文
109      *  @param cpx#> <#cpx#> 控制点的 x坐标
110      *  @param cpy#> <#cpy#> 控制点的 y坐标
111      *  @param x#>   <#x#> 终点的 x坐标
112      *  @param y#>   <#y#> 终点的 y坐标
113      *
114      *  @return 曲线
115      */
116    // CGContextAddQuadCurveToPoint(context, 160, 100, 300, 400);
117    // CGContextStrokePath(context);
118     //两个控制点的
119     CGContextAddCurveToPoint(context, 160, 100, 300, 400, 100, 200);
120     CGContextStrokePath(context);
121
122 }
123
124 //5.画扇形
125 -(void)drawArc:(CGContextRef)context
126 {
127     /**
128      *  <#Description#>
129      *
130      *  @param c#>          <#c#> 上下文
131      *  @param x#>          <#x#> 圆心的x坐标
132      *  @param y#>          <#y#> 圆心的y坐标
133      *  @param radius#>     <#radius#> 圆的半径
134      *  @param startAngle#> <#startAngle#> 开始的角度
135      *  @param endAngle#>   <#endAngle#> 结束的角度
136      *  @param clockwise#>  <#clockwise#> 方向(默认是顺时针0,1是逆时针)
137      * 角度是按顺时针算的
138      *  @return 一段弧
139      */
140 //    CGContextMoveToPoint(context, 100, 100);
141 //    CGContextAddArc(context, 100, 100, 50, 0, M_PI/3, 0);
142 //    //CGContextAddLineToPoint(context, 100, 100);
143 //    CGContextClosePath(context);
144 //    CGContextStrokePath(context);
145    // CGContextFillPath(context);
146
147     CGContextMoveToPoint(context, 150, 150);
148     CGContextAddArc(context, 150, 150,100, 0, 270*M_PI/180, 1);
149     CGContextSetFillColorWithColor(context, [UIColor orangeColor].CGColor);
150     CGContextFillPath(context);
151
152     CGContextMoveToPoint(context, 150, 150);
153     CGContextAddArc(context, 150, 150, 100, 0, 120*M_PI/180, 0);
154     CGContextSetFillColorWithColor(context, [UIColor grayColor].CGColor);
155     CGContextFillPath(context);
156
157     CGContextMoveToPoint(context, 150, 150);
158     CGContextAddArc(context, 150, 150, 100, 120*M_PI/180, 270*M_PI/180, 0);
159     CGContextSetFillColorWithColor(context, [UIColor yellowColor].CGColor);
160     CGContextFillPath(context);
161
162 }
163
164 //4.画圆
165 -(void)drawCircle:(CGContextRef)context
166 {
167     CGContextAddEllipseInRect(context, CGRectMake(100, 100, 100, 100));
168     //空心渲染
169     //CGContextStrokePath(context);
170     //实心渲染
171     CGContextFillPath(context);
172 }
173
174
175 //3.画矩形
176 -(void)drawRectWithContext:(CGContextRef)context
177 {
178     CGContextAddRect(context, CGRectMake(20, 20, 100, 100));
179     //空心
180    // CGContextStrokePath(context);
181     //实心
182   //  CGContextFillPath(context);
183     //同时显示线框和填充
184     CGContextDrawPath(context, kCGPathFillStroke);
185     //以上三种渲染方式只能使用一种,如果都写了只显示先写的
186 }
187
188
189 //2.画三角形
190 -(void)drawTriangle:(CGContextRef)context
191 {
192     CGContextMoveToPoint(context, 20, 20);
193     CGContextAddLineToPoint(context, 100, 40);
194     CGContextAddLineToPoint(context, 150, 100);
195     //绘制空心的三角形
196    // CGContextAddLineToPoint(context, 20, 20);
197     CGContextClosePath(context);
198     CGContextSetStrokeColorWithColor(context, [UIColor orangeColor].CGColor);
199
200
201     //设置实心对应的颜色
202    // CGContextSetFillColorWithColor(context, [UIColor orangeColor].CGColor);
203     //绘制实心的
204   //  CGContextFillPath(context);
205     //渲染
206     CGContextStrokePath(context);
207 }
208
209 //1.画线段
210
211 -(void)drawLine:(CGContextRef)contextRef
212 {
213     //路径的设置
214     //给个起点
215     CGContextMoveToPoint(contextRef, 20, 100);
216     //给个线的终点
217     CGContextAddLineToPoint(contextRef, 200, 200);
218
219
220     //状态的设置
221
222     //设置宽度
223     CGContextSetLineWidth(contextRef, 10);
224
225     //设置颜色
226     //    CGContextSetRGBStrokeColor(contextRef, 1, 0, 1, 1);
227     CGContextSetStrokeColorWithColor(contextRef, [UIColor blueColor].CGColor);
228
229     //线的风格(头尾圆角)
230     // CGContextSetLineCap(contextRef, kCGLineCapRound);
231
232
233     //画虚线
234     /**
235      *  <#Description#>
236      *
237      *  @param contextRef 作用域   在哪留一咕噜
238      *  @param phase#>    起点的左移量
239      *  @param lengths#>  规定实心和虚心的长度
240      *  @param count#>    实心和虚心的循环次数(count 必须等于lengths的长度)
241      *
242      *  @return 虚线
243      */
244
245     CGFloat lengths[]= {10,10};//就是有色跟五色的长度
246     CGContextSetLineDash(contextRef, 0, lengths, 2);
247
248
249
250     //画上View来(渲染)
251     CGContextStrokePath(contextRef);
252
253
254 }

时间: 2024-09-30 23:52:11

Quartz2D的学习2的相关文章

Quartz2D的学习1

1. Quartz概述 Quartz是Mac OS X的Darwin核心之上的绘图层,有时候也认为是CoreGraphics(制图). 共有两种部分组成Quartz: Quartz Compositor,合成视窗系统,管理和合成幕后视窗影像来建立Mac OS X使用者接口.(了解,即幕后工作) Quartz 2D,是iOS和Mac OS X环境下的二维绘图引擎.(熟练,幕前工作,由我们来操作的) 涉及内容包括:基于路径的绘图,透明度绘图,遮盖,阴影,透明层,颜色管理,防锯齿渲染,生成PDF,以及

ios 学习动画的套路 (一)

你也肯定喜欢炫酷的动画! 在APP中,动画就是一个点睛之笔!可以给用户增加一些独特的体验感,估计也有许多的和我一样的,看着那些觉得不错的动画,也就只能流口水的孩子,毕竟~不知道从哪里下手去写!会连续的发两篇博客,总结一下iOS中动画的一个学习套路或者说是一个自己的学习的过程,以及当中出现的一些问题也会和大家分享. 一:从那里开始?这里 Quartz2D! 在我的学习过程中,我是先从 Quartz2D 开始学习的,它里面的贝塞尔曲线在我们创造精美的动画的过程中是必不可少的,Quartz 2D 它首

IOS学习笔记 -- Modal和Quartz2D

一. Modal1.Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止;Modal只是改变了View的现实,没有改变rootViewController 2.常用方法1>.以Modal的形式展示控制器- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion2>.关

学习笔记-quartz2D

一.简介                                                                            quartz2D是属于core Graphic框架,该框架是基于C的API.quartz2D用于绘制平面图形. 二.例程步骤 添加UIView的子类MyView,在MyView.m中实现如下方法: 1 #pragma mark 在这个方法内部进行绘图 2 - (void)drawRect:(CGRect)rect { 3 4 } 在该方法

iOS学习——Quartz2D学习(1)

本文以问答形式主要讲述Quartz2D的相关内容,参考内容是网上下载的学习视频资料. 1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Mac系统 2.Quartz2D能完成的工作 画基本线条,绘制文字,图片,截图,自定义UIView. 3.Quartz2D在开发中的价值 当我们的控件样式极其复杂时,可以把控件内部的结构给画出画,就是自定义控件. 4.什么是图形上下文 图形上下文是用来保存用户绘制的内容状态,并决定绘制到哪个地方的. 用户把绘制好的内容先保存到图形上下文, 然

Quartz2D学习总结

Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 1. 绘制图形 : 线条\三角形\矩形\圆\弧等 2. 绘制文字 3. 绘制\生成图片(图像) 4. 读取\生成PDF 5. 截图\裁剪图片 6. 自定义UI控件...... Quartz2D在iOS开发中的价值 利用UIKit框架提供的控件,拼拼凑凑,能搭建和现实一些简单.常见的UI界面 但是,有些UI界面极其复杂.而且比较个性化,用普通的UI控件无法实现,这时可以利用Quartz2D技术将控件内

记一次Quartz2D学习(一)

经常看点 drawRect的重写  但是不知道这究竟是神马 今天开始学习这一块的东西,更确切地说是深入 早在view的时候 就经常会调用layer的maskToBounds属性,其实 重写 drawRect方法  也就是对layer的一个绘制 重写也比较简单 1 线条 1.1 下面就是简单地线条的画法:(效果如图) - (void)drawRect:(CGRect)rect { // Drawing code //获取绘制图形的上下文 CGContextRef    ctx =UIGraphic

【原】iOS学习之Quartz2D(1)

什么是Quartz2D 1.Quartz 2D 是一个二维绘图引擎,同时支持iOS和Mac系统 2.Quartz 2D 能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件 图形上下文 1.图形上下文(Graphics Context):是一个 CGContextRef 类型的数据 2.图形上下文的作用: 保存绘图信息.绘图状态 决定绘制的输出目标(绘制到什么地方去?) 相同的一套绘图序列,指定不同的 Gr

学习IOS开发UI篇--Quartz2D基本绘图

Quartz2D绘图的代码步骤 1.获得图形上下文CGContextRef ctx = UIGraphicsGetCurrentContext();2.拼接路径(下面代码是搞一条线段)CGContextMoveToPoint(ctx, 10, 10);CGContextAddLineToPoint(ctx, 100, 100);3.绘制路径CGContextStrokePath(ctx); // CGContextFillPath(ctx); 常用拼接路径函数 1.新建一个起点void CGCo