源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

分享一个iOS下实现基本绘画板功能的简单方法

  • 时间:2022-10-07 10:33 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:分享一个iOS下实现基本绘画板功能的简单方法
代码部分 TouchView.h
[u]复制代码[/u] 代码如下:
#import <UIKit/UIKit.h>    @interface TouchView : UIView  {      NSMutableArray *points;      NSArray *points_all;      CGContextRef context;      UIColor *paint_clr;  }  @property (strong,nonatomic) NSMutableArray *points;  @property (strong,nonatomic) NSArray *points_all;  @property (strong,nonatomic) UIColor *paint_clr;    @end 
TouchView.m
[u]复制代码[/u] 代码如下:
#import "TouchView.h"    @implementation TouchView  @synthesize points, points_all, paint_clr;    - (id)initWithFrame:(CGRect)frame  {      self = [super initWithFrame:frame];      if (self) {          // Initialization code          paint_clr = [UIColor greenColor];      }      return self;  }    // Only override drawRect: if you perform custom drawing.  // An empty implementation adversely affects performance during animation.  - (void)drawRect:(CGRect)rect  {      // Drawing code      if ((!self.points) || (self.points.count < 2)) {          return;      }              context = UIGraphicsGetCurrentContext();      //设置画笔粗细       CGContextSetLineWidth(context, 5.0f);      //设置画笔颜色      //[[UIColor blueColor]set ];      // [paint_clr set];      //CGContextSetStrokeColorWithColor(context, [[UIColor blueColor]CGColor]);      CGContextSetStrokeColorWithColor(context, [paint_clr CGColor]);            //画以前的轨迹      for (int j = 0 ; j < [self.points_all count]; j++) {          NSMutableArray *points_tmp = [points_all objectAtIndex:j];                            for (int i = 0;i < [points_tmp count]-1;i++)              {                  CGPoint point1 = [[points_tmp objectAtIndex:i] CGPointValue];                  CGPoint point2 = [[points_tmp objectAtIndex:(i+1)] CGPointValue];                  CGContextMoveToPoint(context, point1.x, point1.y);                  CGContextAddLineToPoint(context, point2.x, point2.y);                  CGContextStrokePath(context);              }          }            //画这次      for (int i=0; i < [self.points count]-1; i++) {          CGPoint point1 = [[self.points objectAtIndex:i] CGPointValue];          CGPoint point2 = [[self.points objectAtIndex:(i+1)] CGPointValue];          CGContextMoveToPoint(context, point1.x, point1.y);          CGContextAddLineToPoint(context, point2.x, point2.y);          CGContextStrokePath(context);      }      }    //不支持多点触摸  - (BOOL) isMultipleTouchEnabled  {      return NO;  }    //创建一个array,并且记录初始ponit  - (void) touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event  {      self.points = [NSMutableArray array];      CGPoint pt = [[touches anyObject] locationInView:self];      [self.points addObject:[NSValue valueWithCGPoint:pt]];  }    //移动过程中记录这些points  //调用setNeedsDisplay,会触发drawRect方法的调用  - (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event  {      CGPoint pt = [[touches anyObject] locationInView:self];      [self.points addObject:[NSValue valueWithCGPoint:pt]];      [self setNeedsDisplay];  }    - (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event  {      NSMutableArray *points_tmp = [[NSMutableArray alloc] initWithArray:self.points];      if (self.points_all == nil) {          self.points_all = [[NSArray alloc] initWithObjects:points_tmp, nil];      }else {          self.points_all = [self.points_all arrayByAddingObject:points_tmp];      }  }  @end 
ViewController.h
[u]复制代码[/u] 代码如下:
#import <UIKit/UIKit.h>    @class TouchView;  @interface ViewController : UIViewController  {      TouchView *tv;  }  @end 
ViewController.m
[u]复制代码[/u] 代码如下:
#import "ViewController.h"  #import "TouchView.h"    @interface ViewController ()    @end    @implementation ViewController    - (void)viewDidLoad  {      [super viewDidLoad];      // Do any additional setup after loading the view, typically from a nib.      self.view.userInteractionEnabled = YES;          // TouchView *tv = [[TouchView alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 260.0f, 260.0f)];      tv = [[TouchView alloc]initWithFrame:self.view.frame];      tv.backgroundColor = [UIColor blackColor];            [self.view addSubview:tv];            UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:[@"White Red Blue Green Yellow" componentsSeparatedByString:@" "]];      seg.segmentedControlStyle = UISegmentedControlSegmentCenter;      seg.tintColor = [UIColor blackColor];       seg.center = CGPointMake(self.view.center.x, (self.view.bounds.size.height - seg.bounds.size.height));       [self.view addSubview:seg];            [seg addTarget:self action:@selector(colorChange:) forControlEvents:UIControlEventValueChanged];  }    - (void)viewDidUnload  {      [super viewDidUnload];      // Release any retained subviews of the main view.  }    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  {      return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);  }    - (void) colorChange: (UISegmentedControl *) seg  {      switch ([seg selectedSegmentIndex])      {          case 0:               tv.paint_clr = [UIColor whiteColor];              break;          case 1:              tv.paint_clr = [UIColor redColor];              break;          case 2:              tv.paint_clr = [UIColor blueColor];              break;          case 3:              tv.paint_clr = [UIColor greenColor];              break;          case 4:              tv.paint_clr = [UIColor yellowColor];              break;          default:                            break;      }  }    @end 
效果图 [img]http://files.jb51.net/file_images/article/201510/20151030100650479.png?20159301076[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部