#xcode #drawing #touch #touchesmoved
#xcode #рисование #коснитесь #touchesmoved
Вопрос:
Я пытаюсь создать код для рисования того, что пользователь рисует пальцем. Для этого я использовал следующий код:
-(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 amp;amp; currentTouch.x < 300 amp;amp; currentTouch.y >245 amp;amp; 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 вызывается не для каждого отдельного пикселя, поэтому между каждой точкой и следующей существует большой разрыв. Поэтому мне нужно как-то заполнить эти пробелы. Может кто-нибудь помочь мне сделать это с помощью некоторого кода?
Заранее благодарю.
Ответ №1:
Больше нет необходимости в ответе, я ответил на свой собственный вопрос: p
Для тех, кто хочет получить ответ, вот код:
UITouch *touch = [touches anyObject];
currentTouch = [touch locationInView:self.view];
if (currentTouch.x >10 amp;amp; currentTouch.x < 300 amp;amp; currentTouch.y >245 amp;amp; 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;
}
}
Я добавил точку с именем last touch для записи последней точки, а затем цикл (for) для заполнения пробелов между текущей точкой и последней.
Комментарии:
1. Итак, как вы это используете, но оставляете некоторый пробел? Этот код отлично работает, но я не хочу, чтобы изображение плотно прилегало друг к другу.