OC - 10.使用Quartz2D绘制个性头像
效果图
- 将一张图片剪切成圆形
- 在图片周围显示指定宽度和颜色的边框
实现思路
效果图中主要由不同尺寸的两大部分组成
- 蓝色的背景区域,尺寸等于图片的尺寸加上边框的尺寸
- 图片区域,尺寸等于图片的尺寸
- 绘制一个圆形背景区域,用边框颜色填充
绘制一个圆形的图片区域,设置不显示超出的部分
实现步骤
加载需要显示的图片
UIImage *image = [UIImage imageNamed:@"资源中图片的名字"];
初始化用到的变量
//图片的宽宽高
CGFloat imageWH = image.size.width;
//边界的宽度
CGFloat border = 1;
//背景区域的宽高
CGFloat ovalWH = imageWH + 2 * border;开启图形上下文(
尺寸为背景区域的尺寸
)//设置图形上下文的尺寸
CGSize size = CGSizeMake(ovalWH, ovalWH);
//开启图形上下文
UIGraphicsBeginImageContextWithOptions(size, NO, 0);绘制背景区域
//绘制封闭的圆形路径
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, ovalWH, ovalWH)];
//设置填充颜色
[[UIColor blueColor] set];
//渲染所绘制的区域
[path fill];绘制图片区域
//绘制封闭的圆形区域
UIBezierPath *clipPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(border, border, imageWH, imageWH)];
//设置超出区域的内容剪掉(不显示)
[clipPath addClip];
//见图片绘制到圆形区域内,从点(border, border)开始
[image drawAtPoint:CGPointMake(border, border)];从图形上下文中取出绘制的图片
UIImage *clipImage = UIGraphicsGetImageFromCurrentImageContext();
将图片显示到imageView上
self.imageView.image = clipImage;
关闭图形上下文
UIGraphicsEndImageContext();
OC - 10.使用Quartz2D绘制个性头像的更多相关文章
- OC - 9.使用Quartz2D绘制下载进度条
效果图 实现思路 要实现绘图,通常需要自定义一个UIView的子类,重写父类的- (void)drawRect:(CGRect)rect方法,在该方法中实现绘图操作 若想显示下载进度,只需要实例化自定 ...
- python 爬取微信好友列表和个性签名,绘制个性签名云图
python爬取微信好友列表和个性签名,绘制个性签名云图 1. 简要介绍 本次实验主要用到下面几个库 : 1)itchat---用于微信接口,实现生成QR码,用于微信扫描登陆 2)re(正则化)--- ...
- 教你制作挂件头像 | 小程序七十二变之 canvas 绘制国旗头像
昨天朋友圈被「请给我一面国旗@微信官方」刷屏,虽然知道是假的,但是从另一个角度来看,弄清楚如何实现更有趣. 1.canvas 这就不得不提到小程序中的 API canvas,H5 中也是有 canva ...
- Quartz2D裁剪圆形头像
// 0. 载入原有图片 UIImage *image = [UIImage imageNamed:icon]; // 1.创建图片上下文 CGFloat margin = border; CGSiz ...
- canvas绘制圆角头像
如果你想绘制的网页包含一个圆弧形的头像的canvas图片,但是头像本身是正方形的,需要的方法如下:首先, 拿到头像在画布上的坐标和宽高:(具体怎么获取不在此做具体介绍) 使用canvas绘制圆弧动画 ...
- iOSQuartz2D-03-定制个性头像
效果图 将一张图片剪切成圆形 在图片周围显示指定宽度和颜色的边框 实现思路 效果图中主要由不同尺寸的两大部分组成 蓝色的背景区域,尺寸等于图片的尺寸加上边框的尺寸 图片区域,尺寸等于图片的尺寸 绘制一 ...
- OC - 11.使用Quartz2D剪裁图片并保存
实现效果 操作步骤 绘制一个矩形框,弹出一个alertView,提示是否保存图片 点击"是",将图片保存到相册 在相册中查看保存的图片 效果图 实现思路 在控制器的view上添加一 ...
- GDI+_绘制QQ头像
Public Sub I_touxiang(ByVal file As String, ByVal Graphics As Long, Width As Long, Height As Long, O ...
- android自定义View绘制圆形头像与椭圆头像
要实现这两种效果,需要自定义View,并且有两种实现方式. 第一种: public class BitmapShaders extends View { private BitmapSh ...
随机推荐
- LINUX下安装ORACLE,完全搞定
参考文档: http://www.tuicool.com/articles/eE3mmy http://blog.chinaunix.net/uid-11209572-id-3599052.html
- ASP.NET最常用的页面生命周期事件
PreInit:在页生命周期的早期阶段可以访问的事件.在PreInit事件后,将加载个性化信息和页主题. Init:在所有的控件都已初始化,且已应用所有外观设置后引发.使用该事件来读取或初始化控件属性 ...
- 使用SetWindowPos API函数移动窗口后,还需修改Delphi的属性值,以备下次使用,否则就会出问题(不是API不起作用,而是使用了错误的坐标值)
单独改变坐标的代码如下,可不断左移: procedure TForm1.Button1Click(Sender: TObject); begin SetWindowPos(panel1.Handle, ...
- C++不能中断构造函数来拒绝产生对象(在构造和析构中抛出异常)
这是我的感觉,具体需要研究一下- 找到一篇文章:在构造和析构中抛出异常 测试验证在类构造和析构中抛出异常, 是否会调用该类析构. 如果在一个类成员函数中抛异常, 可以进入该类的析构函数. /// @f ...
- Qt for Mac:发布程序(widgets和quick2)
当你用Qt开发好程序后,是不是会很期待将你的成果分享给你的小伙伴 可是Qt的库并不是OS X标配的,所以我们要自己去复制库到app包里,才可以让app在其他未安装Qt的电脑上运行. 比较幸运的是,Qt ...
- java学习之数组排序一:选择排序
在讲完java中数组定义的两种方式之外,这里需要讲一下对数组常用的方法,第一个就是排序. 加入我们现在有个数组:int[] arr = {12,87,34,3,98,33,103}; 思路1: 1.首 ...
- ZOJ-3597-Hit the Target!(线段树+扫描线)
题解引自:http://www.cnblogs.com/wuyiqi/archive/2012/04/28/2474614.html 这题和着题解一块看,看了半天才看懂的....菜菜.... 题意:有 ...
- OC中的野指针(僵尸指针)
涉及到内存管理问题的都是类类型的变量,而在OC中我们操纵这些对象都是通过操纵指向他们的指针来完成的,一致很多时候会忽略指针存在.比如定义UIView * view = [[UIView alloc]i ...
- (转载)php数组删除元素各种方法总结
(转载)http://www.111cn.net/phper/php/46865.htm 有很多朋友都不知道怎么把数组中元素给删除,下面我来总结各种数组删除元素方法给各位,有需要了解的朋友可进入参考. ...
- Rectangle Area——LeetCode
Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined b ...