как рисовать плавно с помощью плоского пера или кисти с эффектом трапеции, как Instagram, используя основную графику ..? - PullRequest
1 голос
/ 26 марта 2019

Я попробовал некоторый код для вычисления контрольных точек между начальной и конечной точками безье-пути с помощью сенсорного перемещения, добавления линий к безье-пути и заливки цветом, чтобы придать эффект плоского пера, как в 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с сенсорным движением. как это

спасибо за внимание, пожалуйста, укажите, если любое предложение или образец кода:)

...