iOS 画图讲解
5、画图
(1)画线
//绘图代码写在drawRect里,view加载完成,需要显示的时候调用
//1、获取图形上下文 2、创建路径 3、把图形放入上下文 4、渲染上下文
//drawRect的rect是绘制View的bounds
//重绘
[self setNeedsDisplay];
set = setStroke(描边) + setFill(填充)
//方法一:最原始的方法
//1、获取图形上下文,CG,CoreGraphics,有关图形的框架,开发mac也可以用
CGContextRef ctx = UIGraphicsGetCurrentContext();
//2、创建路径
CGMutablePathRef path = CGPathCreateMutable();
//设置起始点
CGPathMoveToPoint(path, NULL, 50, 50);
//画线到某一点
CGPathAddLineToPoint(path, NULL, 200, 200);
//3、把图形放入上下文
CGContextAddPath(ctx, path);
//4、渲染上下文
CGContextStrokePath(ctx);
//绘图的第二种方法
- (void)drawLine2 {
CGContextRef ctx = UIGraphicsGetCurrentContext();
//设置起始点
CGContextMoveToPoint(ctx, 50, 50);
//画线并设置终点
CGContextAddLineToPoint(ctx, 200, 200);
//渲染上下文
CGContextStrokePath(ctx);
}
//第三种方法
- (void)drawLine3 {
//贝塞尔线,UIKit
//创建路径
UIBezierPath * path = [UIBezierPath bezierPath];
//设置起点
[path moveToPoint:CGPointMake(50, 50)];
//画线并设置终点
[path addLineToPoint:CGPointMake(200, 200)];
//绘制路径
[path stroke];
}
//属性
- (void)drawCtxState {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextMoveToPoint(ctx, 50, 50);
CGContextAddLineToPoint(ctx, 100, 50);
// CGContextMoveToPoint(ctx, 80, 60);
//默认下一根线的起点就是上一根线的终点
CGContextAddLineToPoint(ctx, 100, 200);
//设置线宽度
CGContextSetLineWidth(ctx, 5);
//设置连接样式
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//设置顶角样式
CGContextSetLineCap(ctx, kCGLineCapRound);
//设置线的颜色
[[UIColor redColor] setStroke];
CGContextStrokePath(ctx);
}
//画曲线
- (void)drawRect:(CGRect)rect {
// Drawing code
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextMoveToPoint(ctx, 50, 50);
//画曲线 arg1 上下文 arg2,3 控制点x,y arg4,5 终点x,y
CGContextAddQuadCurveToPoint(ctx, 100, 100, 250, 50);
CGContextStrokePath(ctx);
}
(2)画图形
//画矩形
UIBezierPath * path = [UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 200, 200)];
//画圆角矩形
UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(20, 20, 200, 200) cornerRadius:100];
//画圆弧
//Center 圆弧中心
//radius 圆弧半径
//startAngle 起始角度
//endAngle 结束角度
//clockwise YES 顺时针 NO 逆时针
CGPoint center = CGPointMake(125, 125);
UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:center radius:100 startAngle:0 endAngle:M_PI_2 clockwise:NO];
[path addLineToPoint:center];
//封闭路径
[path closePath];
[path stroke];
//要使用setFill,路径一定是封闭的
[[UIColor greenColor] setFill];
[path fill];
//画椭圆
UIBezierPath * path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 50, 200, 100)];
[path stroke];
}
6、绘制图片和文字
(1)绘制图片
- (void)drawPicture {
//图片裁剪,超出部分全部剪掉
UIRectClip(CGRectMake(0, 0, 50, 50));
UIImage * image = [UIImage imageNamed:@"01"];
//根据rect拉伸图片
[image drawInRect:CGRectMake(0, 0, 100, 100)];
[image drawInRect:rect];
//显示原图片尺寸
[image drawAtPoint:CGPointZero];
//平铺绘图
[image drawAsPatternInRect:rect];
}
(2)绘制文字
- (void)drawRect:(CGRect)rect {
// Drawing code
NSString * string = @"hgfdagskjhdcadkhdkjlashkdklhahgfdagskjhdcad";
NSShadow * shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor yellowColor];
shadow.shadowOffset = CGSizeMake(5, 5);
//模糊度
shadow.shadowBlurRadius = 3;
NSDictionary * dict = @{NSFontAttributeName:[UIFont systemFontOfSize:30],
NSForegroundColorAttributeName:[UIColor redColor],
NSStrokeColorAttributeName:[UIColor blueColor],
NSStrokeWidthAttributeName:@(2),
NSShadowAttributeName: shadow};
//不会换行
[string drawAtPoint:CGPointZero withAttributes:nil];
[string drawInRect:rect withAttributes:dict];
}
5、画图
(1)画线
//绘图代码写在drawRect里,view加载完成,需要显示的时候调用
//1、获取图形上下文 2、创建路径 3、把图形放入上下文 4、渲染上下文
//drawRect的rect是绘制View的bounds
//重绘
[self setNeedsDisplay];
set = setStroke(描边) + setFill(填充)
//方法一:最原始的方法
//1、获取图形上下文,CG,CoreGraphics,有关图形的框架,开发mac也可以用
CGContextRef ctx = UIGraphicsGetCurrentContext();
//2、创建路径
CGMutablePathRef path = CGPathCreateMutable();
//设置起始点
CGPathMoveToPoint(path, NULL, 50, 50);
//画线到某一点
CGPathAddLineToPoint(path, NULL, 200, 200);
//3、把图形放入上下文
CGContextAddPath(ctx, path);
//4、渲染上下文
CGContextStrokePath(ctx);
//绘图的第二种方法
- (void)drawLine2 {
CGContextRef ctx = UIGraphicsGetCurrentContext();
//设置起始点
CGContextMoveToPoint(ctx, 50, 50);
//画线并设置终点
CGContextAddLineToPoint(ctx, 200, 200);
//渲染上下文
CGContextStrokePath(ctx);
}
//第三种方法
- (void)drawLine3 {
//贝塞尔线,UIKit
//创建路径
UIBezierPath * path = [UIBezierPath bezierPath];
//设置起点
[path moveToPoint:CGPointMake(50, 50)];
//画线并设置终点
[path addLineToPoint:CGPointMake(200, 200)];
//绘制路径
[path stroke];
}
//属性
- (void)drawCtxState {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextMoveToPoint(ctx, 50, 50);
CGContextAddLineToPoint(ctx, 100, 50);
// CGContextMoveToPoint(ctx, 80, 60);
//默认下一根线的起点就是上一根线的终点
CGContextAddLineToPoint(ctx, 100, 200);
//设置线宽度
CGContextSetLineWidth(ctx, 5);
//设置连接样式
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//设置顶角样式
CGContextSetLineCap(ctx, kCGLineCapRound);
//设置线的颜色
[[UIColor redColor] setStroke];
CGContextStrokePath(ctx);
}
//画曲线
- (void)drawRect:(CGRect)rect {
// Drawing code
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextMoveToPoint(ctx, 50, 50);
//画曲线 arg1 上下文 arg2,3 控制点x,y arg4,5 终点x,y
CGContextAddQuadCurveToPoint(ctx, 100, 100, 250, 50);
CGContextStrokePath(ctx);
}
(2)画图形
//画矩形
UIBezierPath * path = [UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 200, 200)];
//画圆角矩形
UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(20, 20, 200, 200) cornerRadius:100];
//画圆弧
//Center 圆弧中心
//radius 圆弧半径
//startAngle 起始角度
//endAngle 结束角度
//clockwise YES 顺时针 NO 逆时针
CGPoint center = CGPointMake(125, 125);
UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:center radius:100 startAngle:0 endAngle:M_PI_2 clockwise:NO];
[path addLineToPoint:center];
//封闭路径
[path closePath];
[path stroke];
//要使用setFill,路径一定是封闭的
[[UIColor greenColor] setFill];
[path fill];
//画椭圆
UIBezierPath * path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 50, 200, 100)];
[path stroke];
}
6、绘制图片和文字
(1)绘制图片
- (void)drawPicture {
//图片裁剪,超出部分全部剪掉
UIRectClip(CGRectMake(0, 0, 50, 50));
UIImage * image = [UIImage imageNamed:@"01"];
//根据rect拉伸图片
[image drawInRect:CGRectMake(0, 0, 100, 100)];
[image drawInRect:rect];
//显示原图片尺寸
[image drawAtPoint:CGPointZero];
//平铺绘图
[image drawAsPatternInRect:rect];
}
(2)绘制文字
- (void)drawRect:(CGRect)rect {
// Drawing code
NSString * string = @"hgfdagskjhdcadkhdkjlashkdklhahgfdagskjhdcad";
NSShadow * shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor yellowColor];
shadow.shadowOffset = CGSizeMake(5, 5);
//模糊度
shadow.shadowBlurRadius = 3;
NSDictionary * dict = @{NSFontAttributeName:[UIFont systemFontOfSize:30],
NSForegroundColorAttributeName:[UIColor redColor],
NSStrokeColorAttributeName:[UIColor blueColor],
NSStrokeWidthAttributeName:@(2),
NSShadowAttributeName: shadow};
//不会换行
[string drawAtPoint:CGPointZero withAttributes:nil];
[string drawInRect:rect withAttributes:dict];
}
iOS 画图讲解的更多相关文章
- iOS 画图讲解2
1.图片水印 //layer上下文只能显示在drawRect里 //当开启上下文时,绘制图形即可在viewDidLoad中实现 //位图的上下文 //UIGraphicsBeginImageConte ...
- IOS NSUserDefaults 讲解 用法
IOS NSUserDefaults 讲解 用法 NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults ...
- iOS开发讲解SDWebImage,你真的会用吗?
SDWebImage作为目前最受欢迎的图片下载第三方框架,使用率很高.但是你真的会用吗?本文接下来将通过例子分析如何合理使用SDWebImage. 使用场景:自定义的UITableViewCell上有 ...
- 利用IOS画图功能画出五角星,并且可以调整五角星的填充范围
我们要花的为一个黄色的五角星并且其中的填充黄色能够任意调整,比如只填满半个五角星,或者只填满一个角等等. 首先要重写DrawRect 方法,然后在这里实现我们的画图代码. - (void)drawRe ...
- iOS 画图基础
基础要点: 1,画图不可以在 ViewController 里,而是应该在一个 UIView 的子类中,比如新建一个 DrawView 继承自 UIView. 2,覆盖 UIView 的 drawRe ...
- ios 画图总结
0 CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文1 CGContextMoveToPoint 开始画线2 CGContextA ...
- ios 深入讲解iOS键盘一:控制键盘隐藏显示
在iOS的开发中,我们一般使用UITextField.UITextView处理文字输入等操作,大部分情况下我们只需要一两行代码去手动管理键盘的显示隐藏:让UITextField或UITextView成 ...
- ios开发讲解之anchorPoint和position详解
引言 相信初接触到CALayer的人都会遇到以下几个问题: 为什么修改anchorPoint会移动layer的位置? CALayer的position点是哪一点呢? anchorPoint与posi ...
- iOS 谓词讲解
1.NSPredicate (1)比较运算符 1.比较运算符 > .< .== . >= .<= . != 运算符还可以跟逻辑运算符一起使用,&& , || ...
随机推荐
- Java抽象类和内部类
类(class) 类是相似对象中共同属性和方法的集合体 在面向对象中定义类,就是在描述事物,就是在定义属性(变量)和行为(方法).属性和行为共同成为类中的成员(成员变量和成员方法). 封装.继承和多态 ...
- Firefox常用插件
一.Web浏览使用插件 1.Adblock Plus广告拦截插件:能够自动拦截很多弹出广告,同时支持右键拦截指定信息 2.惠惠购物助手支持各大购物网站商品实时价格比较,非常棒的网站购物利器,插件下载地 ...
- ASP.NET MVC- DropDownList绑定
看一下Controller例子 [ChildActionOnly] public List<SelectListItem> LoadItemStatus() { List<Selec ...
- c++中的signal机制
简介 signal是为了解决类之间通信的问题而出现的,更深入的原因是面向对象讲究封装,但是封装必然导致类之间沟通困难,但是使用接口的方式又太重量级--需要写很多代码,而且会导致接口爆炸 比如你需要把一 ...
- Combox和DropDownList控件的区别
共同点:都是下拉框控件 不同点:Combox用在winform上,DropDownList用在网页上,且两者绑定方式略有不同 绑定数据例子如下—— 1.Combox绑定 DataTable dtBus ...
- MFC中修改静态文本框中文字的字体、颜色
假设有一个静态文本框控件,其ID为:IDC_STATIC_XSDJ,且关联一个control类的CStatic类型的变量m_static_xsdj. 设置字体时自然要用到CFont类,下面介绍两种方法 ...
- 用DataBaseMail发图片并茂的邮件
不知道各位的老板有没有这样的要求, 一些系统中的数据需要定时发出邮件提醒, 如呆料就要到期或者一些待办的事项提醒. 当然这些用SSRS报表订阅可以实现,但有些公司没有设定相应的报表服务,又或者只是一些 ...
- C#获取程序集的版本号和最后编译时间
C#获取程序集的版本号:string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToStrin ...
- cdoj 65 CD Making 水题
CD Making Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/65 De ...
- 今天弱爆了,svn创建项目
今天弱爆了 1.再svnRoot下新建你要建的项目名如:hqdj 文件夹,然后选中它点击右键选中create repository here... ,选择文件系统类型 2.进入conf文件夹进行配置 ...