Как сделать плавный набросок на iPhone

Возможный дубликат:
Алгоритм рисования эскиза iPhone

Я хочу разработать приложение для iPhone, поддерживающее рисование эскизов.

Я использовал несколько таких кодов в touchesMoved:

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);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 0.0, 1.0, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), points.pointB.x, points.pointB.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), points.pointA.x, points.pointA.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Увидеть:

кривые не гладкие

Кривая недостаточно гладкая.

Я попробовал метод Сплайн Catmull-Rom, используя некоторые коды формы sourceforge.net/projects/curve/files/

Увидеть:

плавные кривые

На этот раз кривая гораздо более гладкая, но у нее есть 2 проблемы:

  1. Сплайн Catmull-Rom использует множество сегментов кривой Безье кубического типа и сегмент кривой Безье квадратичного типа для формирования кривой. Квадратичный сегмент кривой Безье не может быть определен, когда конец касания. И я не могу построить квадратный сегмент, пока пользователь не уберет палец с экрана. Я могу строить только кубические сегменты, когда пользователь рисует, поэтому он почувствует некоторую задержку. Кривая отстает от пальца при быстром движении пальца.

  2. Алгоритм слишком сильно корректирует углы, поэтому пользователь не может нарисовать звезду с острыми углами.

У меня есть большое желание предоставить очень хорошую среду для рисования для пользователя, как приложение "Sketch Book" от Autodesk. (см. изображение ниже)

Увидеть:

очень гладкий

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

Как я могу сделать это на iPhone? Какой алгоритм я могу использовать для достижения хорошего качества, например, "Sketch Book"? Любые коды для моей справки?

Спасибо!!

0 ответов

Другие вопросы по тегам