首页 > 代码库 > iOS 绘图
iOS 绘图
-(id)initWithFrame:(CGRect)frame
{
self=[super initWithFrame:frame];
if (self) {
//使用self. 表示调用了set方法 retain了一次
self.lineArray=[NSMutableArray arrayWithCapacity:1];
}
return self;
}
-(void)drawRect:(CGRect)rect
{
//得到上下文,即配置信息
CGContextRef context = UIGraphicsGetCurrentContext();
//设置颜色
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
//画笔粗细
CGContextSetLineWidth(context, 2.0);
//拿到小数组
for (int i=0; i<[_lineArray count]; i++) {
NSMutableArray * pointArray = [_lineArray objectAtIndex:i];
//每一笔的每个点连成线
for (int j=0; j<(int)pointArray.count - 1; j++) {
NSValue * fistPointvalue=http://www.mamicode.com/[pointArray objectAtIndex:j];//第一个点
NSValue * secondPointValue=http://www.mamicode.com/[pointArray objectAtIndex:j+1];//的二个点
//转出CGPoint 类型对象
CGPoint firstPoint=[fistPointvalue CGPointValue];
CGPoint secondPoint=[secondPointValue CGPointValue];
//把笔触移动一个点
CGContextMoveToPoint(context, firstPoint.x , firstPoint.y);
//笔触和另一个点 连城一个路径
CGContextAddLineToPoint(context, secondPoint.x, secondPoint.y);
}
}
//执行绘制
CGContextStrokePath(context);
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSMutableArray *pointArray = [NSMutableArray arrayWithCapacity:1];
//内层数组
[_lineArray addObject:pointArray];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
NSValue *pointValue=http://www.mamicode.com/[NSValue valueWithCGPoint:point];
NSLog(@"point=%@",NSStringFromCGPoint(point));
//大数组
NSMutableArray *pointArray=[_lineArray lastObject];
[pointArray addObject:pointValue];
//重绘
[self setNeedsDisplay];
}
-(void)dealloc
{
[_lineArray release];
[super dealloc];
}
iOS 绘图