您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>通讯/手机编程>

在ios中开发实现画板功能的方法分析

大小:0.53 MB 人气: 2017-09-25 需要积分:1

  最近看了一些网上的画板demo,这些demo的实现方式基本上是使用CGContextRef或者UIBezierPath实现,但是基本上都存在一个比较严重的bug,在使用擦除功能的时候基本上都是直接将画板的颜色改为背景的颜色,那么当背景的是一张图片或者背景并不是单一颜色而是多种颜色时,擦除功能就会失效。本demo文章将解决这样一个问题。按照国际惯例先上图。

  

  demo主要使用CGContextRef实现,擦除功能使用kCGBlendModeDestinationIn和clearColor联合使用实现。

  1、新建DWStroke类存储CGContextRef信息

  DWStroke.h

  #import 《UIKit/UIKit.h》

  typedef struct CGPath *CGMutablePathRef;

  typedef enum CGBlendMode CGBlendMode;

  @interface DWStroke : NSObject

  @property (nonatomic) CGMutablePathRef path;

  @property (nonatomic, assign) CGBlendMode blendMode;

  @property (nonatomic, assign) CGFloat strokeWidth;

  @property (nonatomic, strong) UIColor *lineColor;

  - (void)strokeWithContext:(CGContextRef)context;

  @end

  DWStroke.m

  - (void)strokeWithContext:(CGContextRef)context {

  CGContextSetStrokeColorWithColor(context, [_lineColor CGColor]);

  CGContextSetLineWidth(context, _strokeWidth);

  CGContextSetBlendMode(context, _blendMode);

  CGContextBeginPath(context);

  CGContextAddPath(context, _path);

  CGContextStrokePath(context);

  }

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!