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.
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
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. –
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