UIBezierPath не рисует гладкую кривую

Я использую UIBezierPath для рисования, и я написал код для событий касания и он работает нормально, но мои кривые не сглаживаются, когда я перемещаю палец и рисую некоторую кривую, они не сглаживаются.

- (void)drawRect:(CGRect)rect
{    
    [[UIColor redColor] setStroke];
    for (UIBezierPath *_path in pathArray) 
    [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];
}

#pragma mark - Touch Methods
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    myPath=[[UIBezierPath alloc]init];
    myPath.lineWidth=5;
    myPath.lineCapStyle = kCGLineCapRound;
    myPath.flatness = 0.0;   

    UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
    [myPath moveToPoint:[mytouch locationInView:self]];
    [pathArray addObject:myPath];

}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{   
    UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
    [myPath addLineToPoint:[mytouch locationInView:self]];

    [self setNeedsDisplay];    
}

Вот изображение

На изображении выше, если вы видите буквы a и d, вы увидите, что кривая не является гладкой. Что я должен сделать, чтобы получить плавную криву

Ответы на вопрос(2)

Решение Вопроса

myPath.miterLimit=-10;.

Измените значение, если вам нужно что-то, что принимает значение с плавающей запятой

 Ranjit05 июн. 2012 г., 14:58
Привет, аалок, рад снова тебя видеть, эй, твой трюк не работает, спайков больше нет, но кривая не плавная, я использую твой код, который ты дал ссылку вчера
 The iOSDev05 июн. 2012 г., 15:01
да, ты прав, кривые не такие гладкие
 Ranjit05 июн. 2012 г., 15:04
Так как с этим бороться, я борюсь с утра.:
 The iOSDev05 июн. 2012 г., 15:06
yes должны оптимизировать его для гладких углов. Давайте попробуем найти способ сделать это. нужно некоторое исследование для этого. и это требует времени
 The iOSDev05 июн. 2012 г., 15:18
i обнаружил, что изменение в linecapstyle делает некоторую работу, но не очень хорошее сглаживание, но некоторая плавность достигается с помощьюkCGLineJoinRound попробуй это

addLinePoint так, очевидно, вы получаете линии, а не кривые. Вас заинтересуют другие методы, чтобы получить плавные кривые: AddCurveToPoint или AddQuadCurveToPoint. Но, как вы можете видеть из API, помимо точек, которые вы на самом деле рисуете пальцем, вам также нужны контрольные точки, которые не появляются на чертеже. Даже Photoshop просит вас перемещать их при выполнении кривизны. Другими словами, чтобы сделать рисование вашей руки гладким "автоматически", нужно немало математики. Google "сглаживание рисованной", и вы получите по крайней мере эти точки, чтобы начать с

Смягчение рисованной свободной формы

Сглаживание рисованной кривой

Это действительно не специфично для iOS.

 Ranjit05 июн. 2012 г., 14:25
Привет, спасибо за твой ответ, но все идет над моей головой.

Ваш ответ на вопрос