Как рисовать в рамках ограничений с Objective-C - PullRequest
0 голосов
/ 07 декабря 2011

Я новичок в Objective-C, поэтому, пожалуйста, потерпите меня.Я нахожусь в процессе создания приложения для iPhone, в котором пользователь рисовал на экране, отслеживая форму буквы.

Пока у меня есть расположение TouchesBegan / Moved / Ended и точка / точка для рисования в буферена экране.Я также нарисовал букву «А» на экране, используя координаты линии:

- (void)drawRect:(CGRect)rect
{
    //letter to draw on  
    CGContextRef c = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(c, 12.0);

    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();

    CGFloat components[] = {0.0, 0.0, 1.0, 1.0};

    CGColorRef color = CGColorCreate(colorspace, components);

    CGContextSetStrokeColorWithColor(c, color);
    CGContextSetLineCap(c, kCGLineCapRound);
    CGContextSetLineJoin(c, kCGLineCapRound);
    //1
    CGContextMoveToPoint(c, 60, 400);
    //2
    CGContextAddLineToPoint(c, 160, 100);
    //3
    CGContextAddLineToPoint(c, 260, 400);
    //4
    CGContextMoveToPoint(c, 100, 280);
    //5
    CGContextAddLineToPoint(c, 220, 280);

    CGContextStrokePath(c);
    CGColorSpaceRelease(colorspace);
    CGColorRelease(color);
}

Следующий шаг, который я пытаюсь выяснить, - это как увидеть, когда пользователь вышел за пределы координат (или ограничений)) буквы, которая находится на экране.Я знаю, что должен найти кратчайшее расстояние между точкой и линией, но я не знаю, как это сделать.

Я также пытался написать некоторые из них на Java (поскольку я более знаком с ним), но я все еще не уверен, предпринимаю ли я правильные шаги.

static double ERROR_BOUNDS =0,0;double dRes = lines.distanceToX (point.location.x, point.location.y);

 if (dRes>= ERROR_BOUNDS)
{

Я действительно ударил по кирпичной стене с этим, и я выложу больше кода, если кому-то понадобитсяэто прояснить что-нибудь.Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 07 декабря 2011

Вы можете попытаться сделать путь объектом с использованием логики CGPath , а затем с помощью CGPathContainsPoint, чтобы оценить, было ли касание на пути или нет.

...