Je travaille sur un projet de dessin, où j'ai une option de gomme. Le code ci-dessous est pour quand je commence mon application et dessine quelques lignes et continue à employer la gomme. Cela fonctionne bien et j'obtiens l'effet de gomme. Maintenant, le deuxième scénario est où je dessine 10 lignes puis je clique sur le bouton "annuler" et je défais le tout, puis je refais le tout, et maintenant quand je clique sur le "bouton gomme" et j'essaie d'effacer une partie , mais à la place, cela effacera tout le dessin. C'est ce que j'essaie de comprendre, mais je ne comprends pas où je me trompe, alors, mes amis, aidez-moi s'il vous plaît.gomme ne fonctionne pas dans iOS dessin
Voici mon code.
- (void)drawRect:(CGRect)rect
{
case DRAW:
{
[m_curImage drawAtPoint:CGPointMake(0, 0)];
CGPoint mid1 = midPoint(m_previousPoint1, m_previousPoint2);
CGPoint mid2 = midPoint(m_currentPoint, m_previousPoint1);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.layer renderInContext:context];
CGContextMoveToPoint(context, mid1.x, mid1.y);
CGContextAddQuadCurveToPoint(context, m_previousPoint1.x, m_previousPoint1.y, mid2.x, mid2.y);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineWidth(context, self.lineWidth);
CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor);
CGContextSetAlpha(context, self.lineAlpha);
CGContextSetAllowsAntialiasing(context, YES);
CGContextStrokePath(context);
// [super drawRect:rect];
}
break;
case ERASE:
{
[m_curImage drawAtPoint:CGPointMake(0, 0)];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
CGContextSetBlendMode(context, kCGBlendModeClear);
[super drawRect:rect];
break;
}
case UNDO:
{
[m_curImage drawInRect:self.bounds];
break;
}
case REDO:
{
[m_curImage drawInRect:self.bounds];
break;
}
default:
break;
}
}
Ce sont des fonctions qui s'exécutent lorsque je clique sur annuler/rétablir.
-(void)redrawLine
{
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0f);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
NSDictionary *lineInfo = [m_lineArray lastObject];
m_curImage = (UIImage*)[lineInfo valueForKey:@"IMAGE"];
UIGraphicsEndImageContext();
[self setNeedsDisplayInRect:self.bounds];
}
-(void)undoButtonClicked
{
if([m_lineArray count] > 0)
{
NSMutableArray *line = [m_lineArray lastObject];
[m_bufferArray addObject:line];
[m_lineArray removeLastObject];
[self redrawLine];
}
m_drawStep = UNDO;
}
-(void)redoButtonClicked
{
if([m_bufferArray count] > 0)
{
NSMutableArray *line = [m_bufferArray lastObject];
[m_lineArray addObject:line];
[m_bufferArray removeLastObject];
[self redrawLine];
}
m_drawStep = REDO;
}
S'il vous plaît dites-moi si je le fais bien.
Cordialement,
Ranjit
Je travaille également sur la même fonctionnalité, mais cet effacement ne fonctionne pas pour moi, Pouvez-vous m'aider s'il vous plaît .Quand je suis en mode effacement son dessin ne rien effacer ne rien effacer .. S'il vous plaît aidez-moi – Raj
mode son dessin normalement, ne pas effacer quoi que ce soit .. S'il vous plaît aidez-moi – Raj
J'ai résolu le problème, besoin de définir la couleur de fond de dessin pour effacer la couleur .. merci beaucoup pour vous solutions – Raj