#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.вот так
спасибо за внимание, пожалуйста, укажите, есть ли какие-либо предложения или примеры кода 🙂