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 画图讲解的更多相关文章

  1. iOS 画图讲解2

    1.图片水印 //layer上下文只能显示在drawRect里 //当开启上下文时,绘制图形即可在viewDidLoad中实现 //位图的上下文 //UIGraphicsBeginImageConte ...

  2. IOS NSUserDefaults 讲解 用法

    IOS NSUserDefaults 讲解 用法    NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults ...

  3. iOS开发讲解SDWebImage,你真的会用吗?

    SDWebImage作为目前最受欢迎的图片下载第三方框架,使用率很高.但是你真的会用吗?本文接下来将通过例子分析如何合理使用SDWebImage. 使用场景:自定义的UITableViewCell上有 ...

  4. 利用IOS画图功能画出五角星,并且可以调整五角星的填充范围

    我们要花的为一个黄色的五角星并且其中的填充黄色能够任意调整,比如只填满半个五角星,或者只填满一个角等等. 首先要重写DrawRect 方法,然后在这里实现我们的画图代码. - (void)drawRe ...

  5. iOS 画图基础

    基础要点: 1,画图不可以在 ViewController 里,而是应该在一个 UIView 的子类中,比如新建一个 DrawView 继承自 UIView. 2,覆盖 UIView 的 drawRe ...

  6. ios 画图总结

    0 CGContextRef context = UIGraphicsGetCurrentContext(); 设置上下文1 CGContextMoveToPoint 开始画线2 CGContextA ...

  7. ios 深入讲解iOS键盘一:控制键盘隐藏显示

    在iOS的开发中,我们一般使用UITextField.UITextView处理文字输入等操作,大部分情况下我们只需要一两行代码去手动管理键盘的显示隐藏:让UITextField或UITextView成 ...

  8. ios开发讲解之anchorPoint和position详解

    引言 相信初接触到CALayer的人都会遇到以下几个问题:  为什么修改anchorPoint会移动layer的位置? CALayer的position点是哪一点呢? anchorPoint与posi ...

  9. iOS 谓词讲解

    1.NSPredicate (1)比较运算符 1.比较运算符 > .< .== . >= .<= . != 运算符还可以跟逻辑运算符一起使用,&&  ,  || ...

随机推荐

  1. python用httplib模块发送get和post请求

    在python中,模拟http客户端发送get和post请求,主要用httplib模块的功能. 1.python发送GET请求 我在本地建立一个测试环境,test.php的内容就是输出一句话: 1 e ...

  2. Android之旅 笔记总结(一)

    一.Android入门 1.          Android操作系统的体系结构分为4层,由上而下依次是应用程序.应用程序框架.核心类库(包括Android运行时环境)和Linux内核. 2.     ...

  3. UVa11235 FrequentValues(RMQ)

    Problem F: Frequent values You are given a sequence of n integers a1 , a2 , ... , an in non-decreasi ...

  4. android ListView中的Item有Button时候点击异常处理

    1.当ListView中有Button的时候往往会遇到很多问题,比较常见的一个问题是: 假设:在ListView中有N个Item当点击其中某个Item中的Button的时候,需要改变当前Button的 ...

  5. 电子图书的编目和OPAC揭示

    摘  要  步入数字图书馆时代,电子资源日益增多,尤其在高校图书馆更加迅猛,怎样将图书馆的电子资源尽可能地整合在OPAC系统的检索功能里,以便更加简便.直观地利用,电子图书的编目已成为重要研究课题.本 ...

  6. Android开发之SQLite的使用方法

    前言 SQLite是一种轻量级的小型数据库,虽然比较小,但是功能相对比较完善,一些常见的数据库基本功能也具有,在现在的嵌入式系统中使用该数据库的比较多,因为它占用系统资源很少.Android系统中也不 ...

  7. 内存不足(OutOfMemory)的调试分析

    32位操作系统的寻址空间是4G,其中有2G被操作系统占用,也就是说留给用户进程的内存只有2G(其中还要扣除程序加载时映像占用的部分空间,一般只有1.6G~1.8G左右可以使用). 如果进程运行中需要申 ...

  8. PCA和白化练习之处理图像

    第一步:下载pca_exercise.zip,里面包含有图像数据144*10000,每一列代表一幅12*12的图像块,首先随见展示200幅: 第二步:0均值处理,确保数据均值为0或者接近0 第三步:执 ...

  9. LVM管理及扩容(转)

    LVM磁盘管理 一、LVM简介... 1 二、 LVM基本术语... 2 三、 安装LVM... 3 四、 创建和管理LVM... 4 2、 创建PV.. 6 3、 创建VG.. 7 4、 创建LV. ...

  10. HDU 4757 Tree 可持久化字典树

    Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4757 Des ...