как плавно рисовать плоским пером / с эффектом кисти-ловушки, как Instagram, используя core graphics ..?

#ios #iphone #drawing #core-graphics #uibezierpath

#iOS #iPhone #рисование #core-графика #uibezierpath

Вопрос:

Я попробовал некоторый код для вычисления контрольных точек между начальной и конечной точками контура Безье с помощью touch move, добавления линий к контуру Безье и заливки цветом, чтобы создать эффект плоского пера, как Instagram, но не смог получить плавные изогнутые линии быстрым движением пальца.

из приведенного ниже кода я могу получить угловые линии, не гладкие, как instagram на изображении

 if (_bezierPath == nil || _brushType == BrushTypeNeon) {
           _bezierPath = [UIBezierPath new];
        }
 [_bezierPath moveToPoint:(CGPoint){self.controlPoint1.x   self.startWidth/2, self.controlPoint1.y - self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.startPoint.x   self.startWidth/2, self.startPoint.y - self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.startPoint.x - self.startWidth/2, self.startPoint.y   self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.controlPoint1.x - self.startWidth/2, self.controlPoint1.y   self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.controlPoint1.x   self.startWidth/2, self.controlPoint1.y - self.startWidth/2}];

            [_bezierPath moveToPoint:(CGPoint){self.controlPoint2.x   self.startWidth/2, self.controlPoint2.y - self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.controlPoint1.x   self.startWidth/2, self.controlPoint1.y - self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.controlPoint1.x - self.startWidth/2, self.controlPoint1.y   self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.controlPoint2.x - self.startWidth/2, self.controlPoint2.y   self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.controlPoint2.x   self.startWidth/2, self.controlPoint2.y - self.startWidth/2}];

            [_bezierPath moveToPoint:(CGPoint){self.endPoint.x   self.startWidth/2, self.endPoint.y - self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.controlPoint2.x   self.startWidth/2, self.controlPoint2.y - self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.controlPoint2.x - self.startWidth/2, self.controlPoint2.y   self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.endPoint.x - self.startWidth/2, self.endPoint.y   self.startWidth/2}];
            [_bezierPath addLineToPoint:(CGPoint){self.endPoint.x   self.startWidth/2, self.endPoint.y - self.startWidth/2}];
_bezierPath.lineCapStyle = kCGLineCapRound;
            _bezierPath.lineJoinStyle = kCGLineJoinRound;
_bezierPath.lineWidth = self.startWidth;
        _bezierPath.flatness = 0.3;
[self.strokeColor set];
[_bezierPath fillWithBlendMode:kCGBlendModeNormal alpha:1.f];
  

Я ожидаю эффекта гладкого изогнутого плоского пера, как в instagram с помощью touch move.вот так

спасибо за внимание, пожалуйста, укажите, есть ли какие-либо предложения или примеры кода 🙂