drawrect的使用
通过对ios开发ui篇的学习 总结了drawrect的方法和使用
画直线代码:
- (void)drawRect:(CGRect)rect
{//获取上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//绘图//第一条线CGContextMoveToPoint(ctx, 20, 100);CGContextAddLineToPoint(ctx, 100, 320);//第二条线CGContextMoveToPoint(ctx, 40, 200);CGContextAddLineToPoint(ctx, 80, 100);//渲染CGContextStrokePath(ctx);}
带颜色的直线代码:
- (void)drawRect:(CGRect)rect
{//获取上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//绘图//第一条线CGContextMoveToPoint(ctx, 20, 100);CGContextAddLineToPoint(ctx, 100, 320);//设置第一条线的状态//设置线条的宽度CGContextSetLineWidth(ctx, 12);//设置线条的颜色[[UIColor brownColor]set];//设置线条两端的样式为圆角CGContextSetLineCap(ctx,kCGLineCapRound);//对线条进行渲染CGContextStrokePath(ctx);//第二条线CGContextMoveToPoint(ctx, 40, 200);CGContextAddLineToPoint(ctx, 80, 100);//渲染CGContextStrokePath(ctx);}
一条带颜色,一条为原始的代码:方法一
- (void)drawRect:(CGRect)rect
{//获取上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//绘图//第一条线CGContextMoveToPoint(ctx, 20, 100);CGContextAddLineToPoint(ctx, 100, 320);//设置第一条线的状态//设置线条的宽度CGContextSetLineWidth(ctx, 12);//设置线条的颜色[[UIColor brownColor]set];//设置线条两端的样式为圆角CGContextSetLineCap(ctx,kCGLineCapRound);//对线条进行渲染CGContextStrokePath(ctx);//第二条线CGContextMoveToPoint(ctx, 40, 200);CGContextAddLineToPoint(ctx, 80, 100);//清空状态CGContextSetLineWidth(ctx, 1);[[UIColor blackColor]set];CGContextSetLineCap(ctx,kCGLineCapButt);//渲染CGContextStrokePath(ctx);}
方法二:
- (void)drawRect:(CGRect)rect
{//获取上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//绘图//第二条线CGContextMoveToPoint(ctx, 40, 200);CGContextAddLineToPoint(ctx, 80, 100);//清空状态// CGContextSetLineWidth(ctx, 1);// [[UIColor blackColor]set];// CGContextSetLineCap(ctx,kCGLineCapButt);//渲染CGContextStrokePath(ctx);//第一条线CGContextMoveToPoint(ctx, 20, 100);CGContextAddLineToPoint(ctx, 100, 320);//设置第一条线的状态//设置线条的宽度CGContextSetLineWidth(ctx, 12);//设置线条的颜色[[UIColor brownColor]set];//设置线条两端的样式为圆角CGContextSetLineCap(ctx,kCGLineCapRound);//对线条进行渲染CGContextStrokePath(ctx);
}
画四边形代码:
- (void)drawRect:(CGRect)rect
{//画四边形//获取图形上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//绘图CGContextAddRect(ctx, CGRectMake(20, 50, 100, 100));//渲染CGContextStrokePath(ctx);
}
画一个歪的四边形:
- (void)drawRect:(CGRect)rect
{//画四边形//获取图形上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//矩阵操作//注意点:设置矩阵操作必须要在添加绘图信息之前//旋转45度CGContextRotateCTM(ctx, M_PI_4);//绘图CGContextAddRect(ctx, CGRectMake(150, 100, 100, 100));//渲染CGContextStrokePath(ctx);
}
画一个圆代码以及旋转代码:
- (void)drawRect:(CGRect)rect
{
//获取图形上下文
CGContextRef ctx=UIGraphicsGetCurrentContext();
//矩阵操作
//注意点:设置矩阵操作必须要在添加绘图信息之前
//旋转45度
// CGContextRotateCTM(ctx, M_PI_4);
//绘图
//画四边形
CGContextAddRect(ctx, CGRectMake(150, 100, 100, 100));
//画一个圆
CGContextAddEllipseInRect(ctx, CGRectMake(200, 200, 50, 50));
//渲染
CGContextStrokePath(ctx);
}
旋转代码:
- (void)drawRect:(CGRect)rect
{//获取图形上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//矩阵操作//注意点:设置矩阵操作必须要在添加绘图信息之前//旋转45度CGContextRotateCTM(ctx, M_PI_4);//绘图//画四边形CGContextAddRect(ctx, CGRectMake(150, 100, 100, 100));//画一个圆CGContextAddEllipseInRect(ctx, CGRectMake(200, 200, 50, 50));//渲染CGContextStrokePath(ctx);
}
缩放代码:
- (void)drawRect:(CGRect)rect
{//获取图形上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//矩阵操作//注意点:设置矩阵操作必须要在添加绘图信息之前//缩放,x方向缩放0.5倍,y方向缩放1.5倍CGContextScaleCTM(ctx, 0.5, 1.5);//绘图//画四边形CGContextAddRect(ctx, CGRectMake(150, 100, 100, 100));//画一个圆CGContextAddEllipseInRect(ctx, CGRectMake(200, 200, 50, 50));//渲染CGContextStrokePath(ctx);
}
平移代码:
- (void)drawRect:(CGRect)rect
{//获取图形上下文CGContextRef ctx=UIGraphicsGetCurrentContext();//矩阵操作//注意点:设置矩阵操作必须要在添加绘图信息之前//平移,x方向移动50,y方向移动100CGContextTranslateCTM(ctx, 50, 100);//绘图//画四边形CGContextAddRect(ctx, CGRectMake(150, 100, 100, 100));//画一个圆CGContextAddEllipseInRect(ctx, CGRectMake(200, 200, 50, 50));//渲染CGContextStrokePath(ctx);
}
画一个圆形头像代码:
- (void)drawRect:(CGRect)rect
{//画圆,以便以后指定可以显示图片的范围//获取图形上下文CGContextRef ctx=UIGraphicsGetCurrentContext();CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 50, 50));//指定上下文中可以显示内容的范围就是圆的范围CGContextClip(ctx);UIImage *image2=[UIImage imageNamed:@"me"];[image2 drawAtPoint:CGPointMake(100, 100)];
}
画一个三角形头像:
- (void)drawRect:(CGRect)rect
{//画三角形,以便以后指定可以显示图片的范围//获取图形上下文CGContextRef ctx=UIGraphicsGetCurrentContext();
// CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 50, 50));CGContextMoveToPoint(ctx, 100, 100);CGContextAddLineToPoint(ctx, 60, 150);CGContextAddLineToPoint(ctx, 140, 150);CGContextClosePath(ctx);//注意:指定范围(也就是指定剪切的方法一定要在绘制范围之前进行调用)//指定上下文中可以显示内容的范围就是圆的范围CGContextClip(ctx);UIImage *image2=[UIImage imageNamed:@"me"];[image2 drawAtPoint:CGPointMake(100, 100)];
}
drawrect的使用相关推荐
- 绘图中的drawRect
rect参数:代表的是当前view的bounds 1 为什么要在drawRect方法里面写绘图代码 因为只有在这个方法中才能获取到当前view相关的图形上下文对象 有了这个图形上写文对象后才能进行绘图 ...
- Phone重绘机制drawRect 转
Phone重绘机制drawRect 如何使用iPhone进行绘图.重绘操作 iPhone的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个 ...
- UIView的layoutSubviews和drawRect方法何时调用
UIView的layoutSubviews和drawRect方法何时调用 转自:http://jianyu996.blog.163.com/blog/static/1121145552013051 ...
- drawrect java_对于drawRect使用,谨慎使用!
#1.drawRect简介 drawRect方法在UIView的使用上起着十分关键的作用.不知道大家注意过没有,每一次创建UIView子类文件时候,会有自动带有已注释的drawRect方法,也许从这一 ...
- iOS重绘机制drawRect
iOS的绘图操作是在UIView类的drawRect方法中完成的,所以如果我们要想在一个UIView中绘图,需要写一个扩展UIView 的类,并重写drawRect方法,在这里进行绘图操作,程序会自动 ...
- 内存恶鬼drawRect
转载于:http://bihongbo.com/ 内存恶鬼drawRect 标题有点吓人,但是对于drawRect的评价倒是一点都不过分.在平日的开发中,随意覆盖drawRect方法,稍有 ...
- iOS学习:CAShapeLayer与DrawRect对比,与UIBezierPath画图形
使用CAShapeLayer有以下一些优点 渲染快速.CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多. 高效使用内存.一个CAShapeLayer不需要像普 ...
- 内存恶鬼drawRect - 谈画图功能的内存优化
2019独角兽企业重金招聘Python工程师标准>>> 标题有点吓人,但是对于drawRect的评价倒是一点都不过分.在平日的开发中,随意覆盖drawRect方法,稍有不慎就会让你的 ...
- layoutSubviews 与 drawRect
layoutSubviews在以下情况下会被调用: 1.init初始化不会触发layoutSubviews. 2.addSubview会触发layoutSubviews. 3.设置view的Frame ...
- UIView的layoutSubviews和drawRect
本文转载至 http://my.oschina.net/megan/blog/143027 UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的. ...
最新文章
- 对Transformer、XLNet、 ALBERT、 CRF等技术仍然一知半解?再不学习就OUT了!
- unix mysql_Unix和Mysql中列出的数据库大小之间存在差异
- 3.7 非极大值抑制-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- linux type命令(用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令,如果给出的指令为外部指令,则显示其绝对路径)
- c# 多线程 执行事件 并发_C#.NET Thread多线程并发编程学习与常见面试题解析-1、Thread使用与控制基础...
- go的timer定时器实现
- Jetbrains 系 IDE 编辑器的代码提示功能
- python登录验证程序_python – 测试Flask登录和身份验证?
- JS:ES6-2 const 关键字
- mysql的设计模式_数据库设计中使用设计模式
- localhost提示没有入口_管家婆财贸双全连接失败,服务器端没有找到加密狗
- linux越狱时手机怎么进入dfu,通过软件恢复进入DFU刷机模式教程
- matlab飞机降落过程模拟,scratch作品 “模拟飞机降落”---东风东路小学一年(14)班 沈宸玮...
- 记录一个找直线三等分点的方法及其证明
- javase哪部分最难_JavaSe到底有多重要?
- 分析样布/面料的七个口诀
- 手把手第一篇:写出第一行 Hello World
- 分布式唯一ID几种生成方案
- Nvme驱动补丁 解决Usb3.0/3.1驱动和磁盘控制器WIN7蓝屏方案
- 小程序之 一个方法中的值怎么传递到另一个方法中