ios 三种颜色画笔和橡皮擦的画图板demo
demo功能:三种颜色画笔和橡皮擦的画图板demo 【iphone 6.1 测试通过】
demo说明:项目中PaintView.m 是demo的画板部分,PaintView和三个颜色按钮添加到ViewController的view中。构成程序主界面。
demo截屏:
demo主要代码:PaintView.m 画板view部分
[csharp]
#import "PaintView.h"
#import <QuartzCore/QuartzCore.h>
@implementation PaintView
@synthesize paintColor = _paintColor;
@synthesize erase;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 0.8;
self.layer.shadowOffset = CGSizeMake(5, 5);
self.backgroundColor = [UIColor whiteColor];
self.paintColor = [UIColor blackColor];
// Initialization code
linesArray = [[NSMutableArray alloc]init];
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self
action:@selector(panGesture:)];
[self addGestureRecognizer:panGesture];
[panGesture release];
}
return self;
}
- (void)dealloc {
[linesArray release];
[_paintColor release];
[super dealloc];
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 20);
//NSLog(@"color:%@",_paintColor);
for (NSDictionary *lineDic in linesArray) {
UIColor *lineColor = [lineDic objectForKey:@"color"];
CGContextSetStrokeColorWithColor(context, lineColor.CGColor);
CGMutablePathRef paintPath = CGPathCreateMutable();
NSArray *linePointArray = [lineDic objectForKey:@"line"];
for (NSInteger i=0; i<linePointArray.count; i++) {
CGPoint point = [[linePointArray objectAtIndex:i]CGPointValue];
if (i==0) {
//CGContextMoveToPoint(context, point.x, point.y);
CGPathMoveToPoint(paintPath, NULL, point.x, point.y);
}else {
//CGContextAddLineToPoint(context, point.x, point.y);
CGPathAddLineToPoint(paintPath, NULL, point.x, point.y);
}
}
CGContextAddPath(context, paintPath);
CGContextStrokePath(context);
if ([lineDic objectForKey:@"eraseArray"]) {
//NSLog(@"color:%@",lineColor);
NSMutableArray *eraseArray = [lineDic objectForKey:@"eraseArray"];
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGMutablePathRef paintPath = CGPathCreateMutable();
for (NSInteger i=0; i<eraseArray.count; i++) {
CGPoint point = [[eraseArray objectAtIndex:i]CGPointValue];
//NSLog(@"erase point:%@",NSStringFromCGPoint(point));
if (i==0) {
//CGContextMoveToPoint(context, point.x, point.y);
CGPathMoveToPoint(paintPath, NULL, point.x, point.y);
}else {
//CGContextAddLineToPoint(context, point.x, point.y);
CGPathAddLineToPoint(paintPath, NULL, point.x, point.y);
}
}
CGContextAddPath(context, paintPath);
CGContextStrokePath(context);
}
}
}
-(void)panGesture:(UIPanGestureRecognizer*)thePan{
CGPoint touchPoint = [thePan locationInView:self];
if (self.erase) {
补充:移动开发 , IOS ,