Рисование прикосновениямиMoved

Я пытаюсь создать код для рисования того, что пользователь рисует пальцем. Я использовал для этого следующий код:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if ([touch tapCount] == 2) {
    [myImage setHidden:YES];
}
CGPoint currentTouch = [touch locationInView:self.view];
if (currentTouch.x >10 && currentTouch.x < 300 && currentTouch.y >245 && currentTouch.y < 440) {
CGRect myImageRect = CGRectMake(currentTouch.x, currentTouch.y, 5.0f, 5.0f); 
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"dot.png"]];
[self.view addSubview:myImage];
}

Но проблема в том, что touchesMoved не вызывается для каждого отдельного пикселя, поэтому между каждой точкой и следующей существует большой разрыв. Так что мне нужно как-то заполнить эти пробелы. Может ли кто-нибудь помочь мне сделать это с помощью кода?

Заранее спасибо.


person Amar    schedule 21.10.2011    source источник


Ответы (1)


Больше не нужен ответ, я ответил на свой вопрос :p

Тем не менее, для тех, кто хочет получить ответ, вот код:

UITouch *touch = [touches anyObject];
currentTouch = [touch locationInView:self.view];

if (currentTouch.x >10 && currentTouch.x < 300 && currentTouch.y >245 && currentTouch.y < 440) {
CGRect myImageRect = CGRectMake(currentTouch.x, currentTouch.y, 5.0f, 5.0f); 
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"dot.png"]];
    myImage.tag = tag;
[self.view addSubview:myImage];
[myImage release];
    if (!CGPointEqualToPoint(lastTouch, CGPointMake(0, 0))) { 
        CGPoint nextPoint;
            for (double h = 0.0; h<25.0; h++) {
            double blend = h/25;
            nextPoint.x = currentTouch.x + (blend * (lastTouch.x - currentTouch.x));
            nextPoint.y = currentTouch.y + (blend * (lastTouch.y - currentTouch.y));
            myImageRect = CGRectMake(nextPoint.x, nextPoint.y, 5.0f, 5.0f);
            myImage = [[UIImageView alloc] initWithFrame:myImageRect];
            [myImage setImage:[UIImage imageNamed:@"dot.png"]];
                myImage.tag = tag;
            [self.view addSubview:myImage];
            [myImage release];
    }

    }
lastTouch = currentTouch;
}
}

Я добавил точку под названием «последнее касание», чтобы записать последнюю точку, а затем цикл (for), чтобы заполнить пробелы между текущей точкой и последней.

person Amar    schedule 21.10.2011
comment
Итак, как вы используете это, но оставляете некоторый пробел? Этот код отлично работает, но я не хочу, чтобы изображение плотно прилегало друг к другу. - person Luke Irvin; 14.11.2012