Das obige Bild zeigt den roten Punkt an, ich möchte diese Punkte verbinden.
Ich möchte eine Linie zwischen zwei Punkten zeichnen, ich habe ein Bild in der ImageView, ich möchte einen Teil des Bildes markieren, um den Ort anzuzeigen. Mit dem Touch-Event habe ich die Punkte platziert.
-(void) drawRect:(CGRect)rect
{
if([pointarray count]==4)
{
float firstpointx= [[pointarray objectAtIndex:0]floatValue];
float firstpointy= [[pointarray objectAtIndex:1]floatValue];
float secondpointx= [[pointarray objectAtIndex:2]floatValue];
float secondpointy= [[pointarray objectAtIndex:3]floatValue];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(ctx, [UIColor blueColor].CGColor);
CGContextSetLineWidth(ctx, 2.0);
CGContextMoveToPoint(ctx, firstpointx, firstpointy);///zum ersten Punkt bewegen
CGContextAddLineToPoint(ctx, secondpointx, secondpointy);//Linie vom ersten Punkt zum zweiten Punkt hinzufügen
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextStrokePath(ctx);
[pointarray removeAllObjects];//entferne die ersten beiden Punkte aus dem Array, damit die nächste Linie nicht fortlaufend mit der vorherigen Linie gezeichnet wird
}
}
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
pointarray=[[NSMutableArray alloc]init];
CGPoint curPoint = [[touches anyObject] locationInView:self.view];
[pointarray addObject:[NSNumber numberWithFloat:curPoint.x]];
[pointarray addObject:[NSNumber numberWithFloat:curPoint.y]];
NSLog(@"der Punkt-Array ist %@",pointarray);
[self.view setNeedsDisplay]; // ruft die drawRect-Methode auf
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch tapCount] == 2) {
imageView.image = nil;
return;
}
if(!mouseSwiped) {
UIGraphicsBeginImageContext(self.view.frame.size);
[imageView.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
CGContextFlush(UIGraphicsGetCurrentContext());
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
}
Nachdem ich die Punkte platziert habe, stecke ich hier fest, wie ich die beiden Punkte verbinden kann. Kann mir jemand helfen!!!