Нарисуйте плавную линию касанием пальца на iPhone - PullRequest
3 голосов
/ 21 апреля 2010

Как нарисовать плавную линию движением пальца / касания на iPhone? У меня есть следующий код, но он не является гладким. Например, он делает повороты / повороты, когда я пытаюсь сделать круг. Я думаю, что я должен использовать OpenGL. Есть идеи? образец кода? учебники?

Спасибо!

UIGraphicsBeginImageContext(self.view.frame.size);
[drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), YES);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Ответы [ 3 ]

5 голосов
/ 23 апреля 2010

В итоге я использовал Open GL и частицу. Хорошим примером, чтобы проверить это, является пример кода Apple GLPaint.

3 голосов
/ 19 октября 2010

Добавьте это к своему коду, чтобы сгладить линии между точками

CGContextSetLineJoin(UIGraphicsGetCurrentContext(), kCGLineJoinRound);

Это будет иметь огромное значение

1 голос
/ 21 апреля 2010

Вам не нужен OpenGL. Просто сохраните ссылку на начальную точку и очистите контекст в touchesMoved, и сделайте что-нибудь вроде:

CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), startPoint.x, startPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());

Это сделает прямую линию от начальной точки до текущей точки.

...