ios-day14-04(Quartz 2D之裁剪功能的实现)

源码下载地址:http://download.youkuaiyun.com/detail/liu537192/8514735


效果图:



核心代码:

//
//  JLView.m
//  04-裁剪
//
//  Created by XinYou on 15-3-19.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import "JLView.h"

@implementation JLView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)drawRect:(CGRect)rect
{
    // 1,获得上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    // 2,将ctx拷贝一份到上下文栈中
    CGContextSaveGState(ctx);
    
    // 3,画圆
    CGContextAddArc(ctx, 250, 200, 25, 0, M_PI * 2, 0);
//    CGContextAddRect(ctx, CGRectMake(0, 0, 320, 150));//①
    
    // 4,设置绘图状态
    // 设置裁剪范围。因为当前view中只有一个圆,所以此时设置裁剪范围的作用是:超出圆的范围的部分都剪掉。
    CGContextClip(ctx);
    CGContextFillPath(ctx);
    
    // 5,显示图片
    UIImage *image1 = [UIImage imageNamed:@"me"];
    [image1 drawAtPoint:CGPointMake(225, 175)];
    // 这里绘制一个矩形是没有用的(看不见),因为这个矩形根本不在裁剪范围内,所以不会显示。
    // 如果打开①,下面这个矩形就会显示。理解这是为什么!!!
    CGContextAddRect(ctx, CGRectMake(100, 100, 50, 50));
    CGContextFillPath(ctx);
    
    // 6,还原ctx(还原之后裁剪范围失效)
    CGContextRestoreGState(ctx);
    
    // 7,再显示一张图片,因为已经还原了ctx,所以这张图片不会被裁剪
    UIImage *image2 = [UIImage imageNamed:@"me"];
    [image2 drawAtPoint:CGPointMake(25, 175)];
}

@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值