Как сгладить линии в iPad - PullRequest
2 голосов
/ 14 марта 2011

я записал каждую точку, когда касание пользователя начинает двигаться и заканчивает ipad, а затем я добавляю эти точки в CGMutablePathRef с именем path , затем я использую следующий код для рисованиялинии (путь) пользователь коснулся в ipad.

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineJoin(context, kCGLineJoinRound);
CGContextSetStrokeColorWithColor(context, [UIColor redColor]);
CGContextSetLineWidth(context, 2);
CGContextAddPath(context, path);
CGContextStrokePath(context);

, но эти линии не выглядели гладкими, спасибо за вашу помощь

Ответы [ 3 ]

5 голосов
/ 28 апреля 2011

Вы можете добиться большей плавности, используя следующее:

UIGraphicsBeginImageContext(self.frame.size);
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineJoin(UIGraphicsGetCurrentContext(), kCGLineJoinRound);
CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES);
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), YES);
CGContextSetMiterLimit(UIGraphicsGetCurrentContext(), 2.0);

Но если вам нужно рисовать очень плавные линии / кривые, то вам нужно перерисовать линии, используя UIBezierCurve или любые другие алгоритмы изгиба.

Редактировать: я сделал некоторые изменения в моем коде для плавного рисования. Проверьте мое классическое приложение для доски: https://itunes.apple.com/app/id493525167

1 голос
/ 25 апреля 2013

Я бы посоветовал вам использовать Cocos2d для идеально плавных линий. Возможно, вы захотите взглянуть на это. https://github.com/krzysztofzablocki/smooth-drawing

1 голос
/ 14 марта 2011

Вам нужно будет добавить это сразу после первой строки.

CGContextSetAllowsAntialiasing(context, true);
...