IOS 简单画图显示

首先平台的搭建和前面是一样的,创建好根视图

接下来新建一个类即视图是UIView类型命名为MyView

在RootViewController.h文件中导入MyView的头文件

在RootViewController.m文件中

- (void)viewDidLoad
{
//因为RootViewController自带了一个view,让MyView的view和RootViewController的view一样
MyView *myView = [[MyView alloc]initWithFrame:self.view.frame];
self.view = myView;

[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}

-(void)viewDidLoad

在MyView.h文件中


   //声明一个线数组用来保存点数组
NSMutableArray *linesArr;
//声明颜色
UIColor *penColor;

在MyView.m文件中

画图有两点:1,要有触摸事件;2,要有绘图方法

所以:

第一个为开始触摸的方法


//开始触摸
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//声明一个点数组用来保存所有的点
NSMutableArray *pointArr = [[NSMutableArray alloc]init];
UITouch *touch = [touches anyObject];//得到当前touch的值
CGPoint beganPoint = [touch locationInView:self];//得到当前位置上的点 是结构体类型
[pointArr addObject:penColor];//让第一元素储存画笔颜色
[pointArr addObject:[NSValue valueWithCGPoint:beganPoint]];//把当前位置上的点添加到数组上 NSValue对象类型
[linesArr addObject:pointArr];//把点数组添加到线数组上

}

第二个为触摸过程的移动的方法


//触摸移动
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint movedPoint = [touch locationInView:self];
NSMutableArray *pointArr = [linesArr lastObject];//从线数组里面把点数组拿到
[pointArr addObject:[NSValue valueWithCGPoint:movedPoint]];//把触摸移动的所有的点添加到数组上

[self setNeedsDisplay];//调用drawRect方法

}

第三个为触摸结束:


-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"触摸结束");
}

在初始化函数中:


- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code

//设置MyView的背景颜色
self.backgroundColor = [UIColor grayColor];

//初始化线数组
linesArr = [[NSMutableArray alloc]init];

//初始化颜色
penColor = [UIColor redColor];

//添加按钮
NSArray *titlesArr = [[NSArray alloc]initWithObjects:@"红",@"橙",@"黄",@"绿",@"青",@"蓝",@"紫",@"撤销", nil];
for (int i=0; i<8; i++) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setTitle:[titlesArr objectAtIndex:i] forState:UIControlStateNormal];
[btn setTag:101+i];
btn.frame = CGRectMake(40*i, 460-30, 40, 30);
[btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btn];
}

}
return self;
}

关联方法btnAction方法中:


-(void)btnAction:(id)sender
{
UIButton *btn = (UIButton*)sender;
switch (btn.tag) {
case 101:
penColor = [UIColor redColor];
break;
case 102:
penColor = [UIColor orangeColor];
break;
case 103:
penColor = [UIColor yellowColor];
break;
case 104:
penColor = [UIColor greenColor];
break;
case 105:
penColor = [UIColor cyanColor];
break;
case 106:
penColor = [UIColor blueColor];
break;
case 107:
penColor = [UIColor purpleColor];
break;

default:
[linesArr removeAllObjects];//移除
[self setNeedsDisplay];//重绘
break;
}
}

最后一步绘图:


- (void)drawRect:(CGRect)rect
{
// Drawing code

for (int j=0; j<[linesArr count]; j++) {

NSMutableArray *pointArr = [linesArr objectAtIndex:j];
//防止进入死循环
if ([pointArr count]>0) {
//让第一元素储存画笔颜色,所有循环从第二个元素开始
for (int i=1; i<[pointArr count]-1; i++) {

UIColor *strokeColor = [pointArr objectAtIndex:0];//得到一个元素也就是penColor = [UIColor redColor];红色

CGContextRef context = UIGraphicsGetCurrentContext();//拿到画笔上下文
CGContextSetStrokeColorWithColor(context,strokeColor.CGColor);//设置画笔的颜色
CGContextSetLineWidth(context, 1.0);//设置画笔的粗细

CGPoint beginPoint = [[pointArr objectAtIndex:i]CGPointValue];//得到开始的点
CGPoint endPoint = [[pointArr objectAtIndex:i+1]CGPointValue];//得到最后的点

CGContextMoveToPoint(context, beginPoint.x, beginPoint.y);//设置开始点的位置
CGContextAddLineToPoint(context, endPoint.x, endPoint.y);//画一条到某点的线
CGContextStrokePath(context);//开始绘制
}

}

}

}

结果显示:

时间: 2024-08-29 12:18:52

IOS 简单画图显示的相关文章

IOS 键盘的显示与关闭,以及移动显示(UITextView处理完整版)

IOS 键盘的显示与关闭 在每一个IOS应用中,几乎不可避免的要进行文本输入操作,例如要求用户填写登陆注册信息,进行话题的评论回复,等等.用到的文本输入组件有UITextField,UITextView,对于这两个组件的相关属性和方法想必大家都很熟悉,但貌似对于键盘的显示或隐藏过程貌似常常不是很清楚,其实本人也是一知半解,所以趁此做简单的总结,基本上以下描述出自于官方的文档,并没有什么更改. 1.开启键盘面板 当用户触击某一个view时,系统会自动指定该view为第一响应对象(first res

IOS简单的登陆界面

主要需要注意的几个问题: 1.导入图片方式最好用文件导入 代码: 在ViewController.m文件中 2.UILable常用属性 @property(nonatomic,copy)   NSString           *text; //设置文本内容 @property(nonatomic,retain) UIFont             *font; //设置字体 @property(nonatomic,retain) UIColor            *textColor;

Xamarin iOS教程之显示和编辑文本

Xamarin iOS教程之显示和编辑文本 Xamarin iOS显示和编辑文本 在一个应用程序中,文字是非常重要的.它就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些应用程序要表达的信息.以下将为开发者介绍3种关于文本的视图. Xamarin iOS标签视图 标签视图(一般使用UILabel类实现)一般用于在应用程序中为用户显示少量的信息. [示例2-13]以下就是通过标签视图为开发者显示一首诗的效果.具体步骤如下: (1)创建一个Single View Application

iOS简单易用的标签列表界面

iOS简单易用的标签列表界面 Demo效果: Demo演示: 1.使用cocoapods引入YZTagListView,或者直接拖入YZTagListView文件夹到项目中 2.导入YZTagListView.h头文件 1 #import "YZTagList.h" 3.创建YZTagListView控件 1 2 3   YZTagList *tagList = [[YZTagList alloc] init];   tagList.backgroundColor = [UIColor

jmGraph:一个基于html5的简单画图组件

jmGraph:一个基于html5的简单画图组件 特性: 代码书写简单易理解 面向对象的代码结构 对图形控件化 样式抽离 模块化:入seajs实现模块化开发 兼容性:暂只推荐支持html5的浏览器:ie9+,chrome,firefox等. jiamao/jmgraph · GitHub APIs jmgraph是一个基于html5的WEB前端画图组件. 前端画图对象控件化,支持鼠标和健盘事件响应,可对单个控件样式设定,支持简单的动画处理.可大大地简化前端画图.

ISNULL做简单的显示字段逻辑

在做查询时候,有时候因为变更需求,修改查询后的显示字段为一个新增的字段,导致我们的SQL需要修改,这时候我们可能会用到ISNULL函数来简单做显示逻辑处理. ISNULL 使用指定的替换值替换 NULL. 语法ISNULL ( check_expression , replacement_value ) 参数check_expression :将被检查是否为 NULL的表达式.check_expression 可以是任何类型的. replacement_value:在 check_express

iOS常用于显示几小时前/几天前/几月前/几年前的代码片段

iOS常用于显示几小时前/几天前/几月前/几年前的代码片段 2015-03-13 10:09 版权声明:请关注个人博客:http://www.henishuo.com/ print? /** * Retain a formated string with a real date string * * @param dateString a real date string, which can be converted to a NSDate object * * @return a strin

ios设置中显示自己的应用

1.建立一个setting bundle文件.如图: 2.会出现一个文件,打开Root.plist文件,对plist文件中的值进行设置. 3.其中设置中又6种样式. Group      开头的title Multi value Slider    拖拉设置 TextField   文本框 Title         文本 Toggle Switch 开关控件 4.代码实现,可以在程序内获取设置值. 在程序员中加入 NSUserDefaults *defaults = [NSUserDefaul

iOS开发- iOS7显示偏差(UITableView下移)解决办法

之前碰到过一个问题. 就是利用storyboard拖动出来的控件, 在iOS7上跑老是莫名的下移. 比如这样(红色区域为多余的) 解决办法: iOS7在Conttoller中新增了这个属性: automaticallyAdjustsScrollViewInsets,当设置为YES时(默认YES),如果视图里面存在唯一一个UIScrollView或其子类View,那么它会自动设置相应的内边距,这样可以让scroll占据整个视图,又不会让导航栏遮盖. 我们设置automaticallyAdjusts