Quartz 2D 图形上下文栈 矩阵 裁剪

Quartz 2D 图形上下文栈  矩阵

 1 //
 2 //  DJVIew.m
 3 //  图形上下文栈
 4 //
 5 //  Created by zjj on 15/6/30.
 6 //  Copyright (c) 2015年 zjj. All rights reserved.
 7 //
 8
 9 #import "DJVIew.h"
10
11 @implementation DJVIew
12
13 - (void)drawRect:(CGRect)rect
14 {
15     CGContextRef ref = UIGraphicsGetCurrentContext();
16     // 将ref(当前图形上下文)拷贝一份放入图形上下文栈里
17     CGContextSaveGState(ref);
18     //矩阵操作 旋转
19     CGContextRotateCTM(ref, M_PI_4*0.3);
20     // 矩阵操作 界面上所有图案缩放
21     CGContextScaleCTM(ref, 0.5, 0.5);
22     //矩阵操作 平移
23     CGContextTranslateCTM(ref, 100, 100);
24     // 设置绘图状态
25     [[UIColor redColor]set];
26     CGContextSetLineWidth(ref, 10);
27     CGContextSetLineCap(ref, kCGLineCapRound);
28
29     CGContextMoveToPoint(ref, 20, 35);
30     CGContextAddLineToPoint(ref, 88, 195);
31     CGContextAddEllipseInRect(ref, CGRectMake(100, 100, 100, 100));//圆
32     CGContextAddArc(ref,200, 200, 150, 0, M_PI*2, 0);//圆
33     CGContextStrokePath(ref);
34 //    // 设置绘图状态
35 //    [[UIColor blackColor]set];
36 //    CGContextSetLineWidth(ref, 1);
37 //    CGContextSetLineCap(ref, kCGLineCapButt);
38     // 将栈顶上下文出栈替换当前上下文
39     CGContextRestoreGState(ref);
40
41     CGContextAddRect(ref, CGRectMake(200, 200, 88, 88));//方
42     CGContextMoveToPoint(ref, 10, 50);
43     CGContextAddLineToPoint(ref, 266, 225);
44     CGContextStrokePath(ref);
45 }
46
47 @end

裁剪 如:任意图片裁剪为圆形头像等

时间: 2024-12-27 22:53:59

Quartz 2D 图形上下文栈 矩阵 裁剪的相关文章

Quartz2d 画饼状图 图形上下文栈 矩阵操作 裁剪圆角图片

画饼状图 - (void)drawRect:(CGRect)rect { // Drawing code // 需求:根据sections的数据,绘制多个扇形 // 1.获取上下文(Layer Graphics Context) CGContextRef ctx = UIGraphicsGetCurrentContext(); // 2.根据sections的个数,计算扇形的起始和结束位置来画扇形 NSInteger count = self.sections.count; // 如果没有数据,

iOS高级-QuartzCore框架-图形上下文栈、矩阵操作、裁剪、重绘(刷帧)

一.图形上下文栈1.自定义一个MJView,继承自UIView2.将默认View的Class设置为MJView3.实现drawRect:方法-(void)drawRect:(CGRect)rect{ //1.获得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(): //将当前的ctx拷贝一份放到栈中 CGContextSaveGState(ctx): //设置绘图状态 CGContextSetLineWidth(ctx,10): [[UICo

iOS开发UI篇—Quartz2D使用(图形上下文栈)

iOS开发UI篇-Quartz2D使用(图形上下文栈) 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurre

iOS开发UI篇—Quartz2D使用(图形上下文栈

转自:http://www.cnblogs.com/wendingding/p/3782489.html 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextR

图形上下文的矩阵操作(平移-缩放-旋转)

图形上下文的矩阵操作(旋转.缩放和平移) CGContextRotateCTM:图形上下文旋转,以上下文的原点(左上角)为基准 CGContextScaleCTM:图形上下文的缩放,以上下文的原点(左上角)为基准 CGContextTranslateCTM:图形上下文的平移,以上下文的原(左上角)点为基准 注意:一定要在添加路径之前进行设置 下面贴出swift版代码: 1 override func draw(_ rect: CGRect) { 2 let context = UIGraphic

猫猫学IOS(三十一)UI之Quartz2D图形上下文栈

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243?viewmode=contents 首先,前面博客说过.qurza2d的上下文中有绘图信息和绘图的属性. 但是他是怎么绘制到上下午中的呢? 我们画图时候一半会用这三个步骤: (1)获取上下文 (2)绘图 (3)渲染 这里引申出来一个问题,画两条线的时候,是怎么工作呢? 画两条相交的线 设置线段的宽度:两头为圆形,颜色等. 代码: - (void)drawRect

Quartz2D使用(图形上下文栈)

Quartz2D使用(图形上下文栈) 一.qurza2d是怎么将绘图信息和绘图的属性绘制到图形上下文中去的? 说明: 新建一个项目,自定义一个view类和storyboard关联后,重写该类中的drowrect方法. 画线的三个步骤: (1)获取上下文 (2)绘图 (3)渲染 要求:画两条单独的线 代码和效果图: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurrentContext

ios图形上下文栈

1 - (void)drawRect:(CGRect)rect 2 { 3 // 获取上下文 4 CGContextRef ctx = UIGraphicsGetCurrentContext(); 5 6 // 保存一份最纯洁的图形上下文 7 // 调用一次该方法就会拷贝一个上下文到栈中,存几次就最多能调用几次 CGContextRestoreGState(ctx),如果存了一次,取第二次的时候就会报错 8 9 CGContextSaveGState(ctx); 10 //CGContextSa

IOS 图形上下文栈

- (void)drawRect:(CGRect)rect { // 获取上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 保存一份最纯洁的图形上下文 // 调用一次该方法就会拷贝一个上下文到栈中 CGContextSaveGState(ctx); //CGContextSaveGState(ctx); // 第一条线 // 利用图形上下文保存绘图信息 CGContextMoveToPoint(ctx, 150, 20); CGCo