利用Quartz2D,将一张图片画到一个特殊形状的背景图片上
2015-09-02 14:17
375 查看
- (void)drawRect:(CGRect)rect{
//0.加载图片
UIImage *img = [UIImage
imageNamed:@"show"];
UIImage *bg = [UIImage
imageNamed:@"bg"];
//1.获得图片的尺寸
CGFloat imgW = img.size.width;
CGFloat imgH = img.size.height;
//2.获取上下文
CGContextRef ctx =
UIGraphicsGetCurrentContext();
//3.颠倒坐标系
//3.1.整个绘图区域向下移动(移动的高度是绘制区域的高度)
CGContextTranslateCTM(ctx,
0, rect.size.height);
//3.2.让绘图区域围绕(绘制区域的X轴翻转)
CGContextScaleCTM(ctx,
1, -1);
//4.绘制图片
CGRect frame = CGRectMake(20,
20, imgW, imgH);
//4.1绘制背景图片
//CGContextClipToMask:裁剪指定的区域作为后续的绘图范围,图片的作用就是在指定的
//区域做一个标记,后续绘图内容超出这个图片范围的内容被裁剪掉
CGContextClipToMask(ctx, frame, bg.CGImage);
//4.2绘制需要显示的图片
CGContextDrawImage(ctx, frame, img.CGImage);
//5.渲染
CGContextStrokePath(ctx);
}
//0.加载图片
UIImage *img = [UIImage
imageNamed:@"show"];
UIImage *bg = [UIImage
imageNamed:@"bg"];
//1.获得图片的尺寸
CGFloat imgW = img.size.width;
CGFloat imgH = img.size.height;
//2.获取上下文
CGContextRef ctx =
UIGraphicsGetCurrentContext();
//3.颠倒坐标系
//3.1.整个绘图区域向下移动(移动的高度是绘制区域的高度)
CGContextTranslateCTM(ctx,
0, rect.size.height);
//3.2.让绘图区域围绕(绘制区域的X轴翻转)
CGContextScaleCTM(ctx,
1, -1);
//4.绘制图片
CGRect frame = CGRectMake(20,
20, imgW, imgH);
//4.1绘制背景图片
//CGContextClipToMask:裁剪指定的区域作为后续的绘图范围,图片的作用就是在指定的
//区域做一个标记,后续绘图内容超出这个图片范围的内容被裁剪掉
CGContextClipToMask(ctx, frame, bg.CGImage);
//4.2绘制需要显示的图片
CGContextDrawImage(ctx, frame, img.CGImage);
//5.渲染
CGContextStrokePath(ctx);
}
相关文章推荐
- 贪婪模式与懒惰模式(正则表达式)
- 项目中的权限管理
- 8.11.1 Internal Locking Methods
- android中setText不能传int值
- 异常处理---java.lang.IllegalStateException: getWriter() has already been called for this
- Spark问题笔记4
- Android Studio配置git,实现项目在github上的版本同步
- Bootstrap学习:面包屑导航
- Bootstrap学习:分页
- Bootstrap学习:标签
- Bootstrap学习:徽章
- EL简介
- docker容器网络模式配置场景
- MotionEvent的getX(),getY()与getRawX(),getRawY()的区别
- 正则表达式
- C 风格字符串,C++string类,MFC,CString类的区别。
- 备战阿里面试!
- Bootstrap学习:超大屏幕
- Bootstrap学习:页面标题
- Bootstrap学习:缩略图