一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

在ios中開(kāi)發(fā)實(shí)現(xiàn)畫板功能的方法分析

大小:0.53 MB 人氣: 2017-09-25 需要積分:1

  最近看了一些網(wǎng)上的畫板demo,這些demo的實(shí)現(xiàn)方式基本上是使用CGContextRef或者UIBezierPath實(shí)現(xiàn),但是基本上都存在一個(gè)比較嚴(yán)重的bug,在使用擦除功能的時(shí)候基本上都是直接將畫板的顏色改為背景的顏色,那么當(dāng)背景的是一張圖片或者背景并不是單一顏色而是多種顏色時(shí),擦除功能就會(huì)失效。本demo文章將解決這樣一個(gè)問(wèn)題。按照國(guó)際慣例先上圖。

  

  demo主要使用CGContextRef實(shí)現(xiàn),擦除功能使用kCGBlendModeDestinationIn和clearColor聯(lián)合使用實(shí)現(xiàn)。

  1、新建DWStroke類存儲(chǔ)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%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?