Как сгладить ход маркера для iPhone? - PullRequest
2 голосов
/ 16 марта 2012

Привет, я работаю над приложением, где мне нужно что-то нарисовать.Когда я рисую с маркером обводки, это делает некоторые края, как я могу избежать этих краев?enter image description here

enter image description here

Код для хода маркера

- (void)drawRect:(CGRect)rect
{
//    KidsPhotoBookAppDelegate *appDelegate = (KidsPhotoBookAppDelegate*)[[UIApplication sharedApplication]delegate];
//    brushPattern = (UIColor*)appDelegate.kidsSelectedColor;

    DBManager *dbMgr = [DBManager sharedManager];
    [dbMgr.c setStroke];
    for (UIBezierPath *_path in pathArray) 
        [_path strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];  
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    KidsPhotoBookAppDelegate *appDelegate = (KidsPhotoBookAppDelegate*)[[UIApplication sharedApplication]delegate];

    myPath=[[UIBezierPath alloc]init];
    myPath.lineWidth = appDelegate.kidsBrushSize;
    myPath.lineCapStyle = kCGLineCapRound;
    brushPattern=appDelegate.kidsSelectedColor;
    UITouch *mytouch=[[touches allObjects] objectAtIndex:0];
    [myPath moveToPoint:[mytouch locationInView:self]];
    [pathArray addObject:myPath];

    appDelegate.viewContainsDrawing = YES;
}

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

    [self setNeedsDisplay];
}

Ответы [ 3 ]

4 голосов
/ 16 марта 2012

Вы должны установить соединение строк в kCGLineJoinRound , используя функцию CGContextSetLineJoin . См. Quartz 2D Guide для получения дополнительной информации.

UPDATE

Поскольку вы используете UIBezierPath, попробуйте установить lineJoinStyle из UIBezierPath в kCGLineJoinRound.

1 голос
/ 16 марта 2012

Как вы рисуете эти кривые?Если вы рисуете последовательность коротких прямых отрезков, это проблема.Вы должны рисовать эти виды кривых с помощью безье пути.Если вы уже используете путь Безье, вам может потребоваться настроить свойство flatness.

0 голосов
/ 26 июня 2012

Я достиг этой гладкости с помощью этого кода https://github.com/levinunnink/Smooth-Line-View

...