2013-10-04 7 views
6

Ich habe einige Probleme mit dem Zeichnen von App in IOS. Ich habe die freie Handzeichnung mit Hilfe einiger Tutorials erstellt. Aber ich habe einige Schwierigkeiten beim Löschen der Zeichnung gefunden. In meiner App habe ich Knopf mit Radiergummi als Hintergrundbild. Nachdem ich den Radiergummiknopf gedrückt habe, wenn ich über die Zeichnung wische, löscht es die Zeichnung, wohin auch immer ich wische. Kann mir jemand dabei helfen? Vielen Dank im Voraus.Wie lösche ich die Zeichnung mit einem Klick?

Da unten ist mein Code:

@implementation LinearInterpView 
{ 
    UIBezierPath *path; 
} 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

-(id)initWithCoder:(NSCoder *)aDecoder { 

    if(self = [super initWithCoder:aDecoder]) { 
     [self setMultipleTouchEnabled:YES]; 
     [self setBackgroundColor:[UIColor whiteColor]]; 
     path=[UIBezierPath bezierPath]; 
     [path setLineWidth:2.0]; 
    } 
    return self; 
} 

-(void)drawRect:(CGRect)rect{ 
    [[UIColor blackColor] setStroke]; 
    [path stroke]; 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch=[touches anyObject]; 
    CGPoint p=[touch locationInView:self]; 
    [path moveToPoint:p]; 
} 

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch=[touches anyObject]; 
    CGPoint p=[touch locationInView:self]; 
    [path addLineToPoint:p]; 
    [self setNeedsDisplay]; 
} 

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self touchesMoved:touches withEvent:event]; 
} 

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{ 

    [self touchesEnded:touches withEvent:event]; 
} 

// This is the button action to erase the drawing. 
- (IBAction)erase:(id)sender { 
    CGContextRef cgref=UIGraphicsGetCurrentContext(); 
    CGContextSetBlendMode(cgref, kCGBlendModeClear); 
} 

Bitte löschen Sie mich, was für Fehler habe ich getan.

+0

drawRect jedes Mal aufgerufen wird, wenn Sie einen Schlaganfall machen, so in Ihrem drawRect Sie Strichfarbe als schwarz jedes Mal setzt es, ich will daher aufgerufen wird, um frage dich, wenn du den Löschknopf drückst und versuchst zu löschen, bekommst du einen schwarzen Strich oder nicht? – azmuhak

+0

Ja, absolut sind die Striche schwarz in der Farbe. Ich habe auch Zweifel, wenn ich löschen möchte, muss ich drawRect Methode aufrufen. Ist es so, was sind die Änderungen, die im Code gemacht werden müssen, ohne die Zeichnungen in schwarzer Farbe zu beeinflussen und auch wird es die Linien löschen. –

+0

Nun, der einfache Weg ist, einen Bool-Wert zu verwenden und in der Lösch-Button-Aktion, stellen Sie die bool und in Draw Rect-Methode setzen Sie die Farbe Ihres Striches entweder schwarz oder weiß abhängig von der Bool-Wert. – azmuhak

Antwort

0

Warum implementieren Sie nicht dieselbe Logik in der Löschschaltfläche wie in der Schaltfläche zum Zeichnen. machen Sie einfach die Standardfarbe des Strichs im Radiergummi als weiße Farbe oder welche Farbe auch immer Ihr Hintergrund ist.

+0

Ich habe versucht, aber es funktioniert nicht –

+0

Sie können PLZ Code-Snippet und ich kann es für Sie überprüfen? – azmuhak

+0

Sir, ich habe meinen Post mit meiner Kodierung bearbeitet. Überprüfen Sie bitte das. –

1

Also mit dem Zeichnen meinen Sie, dass Sie Linien auf dem Bildschirm gezeichnet haben. Mit etwas Farbe können Sie dasselbe tun, indem Sie weiße Farbe und Alpha 1 setzen, so dass weiße Linien die vorhandenen farbigen Linien ersetzen. Eine bessere tutorial here. This schien auch wichtig.

+0

Ich kenne die Logik und versuchte es auch, aber ich konnte nicht löschen. –

+0

hast du das ray wenderlich Tutorial gesehen, es funktioniert gut. – satheeshwaran

+0

Ja, zwei Tage zuvor hatte ich gerade dieses Tutorial überschritten. aber ich habe es nicht versucht. Es hat so viele Funktionen. Verwirrend ein bisschen. –

1

Zunächst sollte Ihre Logik eine Schicht auf ImageView machen.

Dann können Sie auf dieser Ebene zeichnen dann übergeben weiße Farbe zu löschen.

Es wird aussehen wie löschen und Ihre Ansicht wird je nach Anforderung aussehen.

Das wird sicher funktionieren.

+0

Ist diese Hilfe für Sie, wenn ja dann bitte stimmen? – virantporwal

+0

Ja, wird es sein. Weiterer Prozess ist, dies als Text zu speichern und als Daten in der Tabellenansicht anzuzeigen. –

+0

ok up vote meine antwort ... – virantporwal

1

Versuchen Sie, diese in iOS Zeichnung zu löschen:

- (IBAction)eraserPressed:(id)sender { 
    red = 255.0/255.0; 
    green = 255.0/255.0; 
    blue = 255.0/255.0; 
    opacity = 1.0; 
} 
Verwandte Themen