Я работаю над проектом рисования, я хочу поддерживать мультитач, я прошел онлайн-документацию, предлагающую отслеживать точки касания, я сделал это, но я не получаю желаемого поведения. Я не получаю прямых линий.Трек точки касания в Multitouch
Ниже мой код
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
red = 0.0/255.0;
green = 0.0/255.0;
blue = 0.0/255.0;
brush = 10.0;
opacity = 1.0;
self.view.multipleTouchEnabled = YES;
touchPaths = [NSMutableDictionary dictionary];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches)
{
NSString *key = [NSString stringWithFormat:@"%d", (int) touch];
lastPoint = [touch locationInView:self.view];
[touchPaths setObject:[NSValue valueWithCGPoint:lastPoint] forKey:key];
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UITouch *touch in touches)
{
NSString *key = [NSString stringWithFormat:@"%d", (int) touch];
lastPoint = [[touchPaths objectForKey:key] CGPointValue];
CGPoint currentPoint1 = [touch locationInView:self.view];
UIGraphicsBeginImageContext(self.view.frame.size);
[self.tempDrawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint1.x, currentPoint1.y);
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), brush);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, 1.0);
CGContextSetBlendMode(UIGraphicsGetCurrentContext(),kCGBlendModeNormal);
CGContextStrokePath(UIGraphicsGetCurrentContext());
self.tempDrawImage.image = UIGraphicsGetImageFromCurrentImageContext();
[self.tempDrawImage setAlpha:opacity];
UIGraphicsEndImageContext();
lastPoint = currentPoint1;
}
}
Но когда я рисую с помощью этого кода, я получаю это.
Так что друзья, пожалуйста, помогите мне, что я делаю неправильно.
С уважением Ранджит
спасибо, он работает, я делаю это, потому что я хотел писать каждый раз, когда я положил руку на экран ipad и правильно. Можете направить меня, как я отклоняю это касание руки и только рисую пальцем/стилусом, и все, что нарисовано с помощью запястья, должно быть отменено/отклонено. – Ranjit
Кроме того, это был всего лишь пример с двумя точками, то есть с последней точкой и текущей точкой. Теперь в моем проект, чтобы нарисовать гладкие линии и кривые, у меня есть две последние точки и одна текущая точка в штрихах, так что я должен хранить их все в отдельных словарях? – Ranjit
См. Эту страницу для подсказок о том, как рисовать более гладкие пути: http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_freehand-drawing/ – Krumelur