Faire des beaux traits à chaque bouton
Jennifer75a
Membre
Bonjour,
J'arrive à faire des traits mais je voudrais les faire un par un quand j'appuie sur un bouton. merci de votre aide.
-(void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
// premier trait
if (y == 1) {
CGContextSetRGBStrokeColor(ctx, 1, 0, 0, 1);
CGContextSetLineWidth(ctx, 1);
CGContextMoveToPoint(ctx, 0, 0);
CGContextAddLineToPoint(ctx, 30, 20);
CGContextStrokePath(ctx);
}
// deuxième trait
if (y == 2) {
CGContextSetRGBStrokeColor(ctx, 0, 0, 1, 1);
CGContextSetLineWidth(ctx, 1);
CGContextMoveToPoint(ctx, 30, 20);
CGContextAddLineToPoint(ctx, 10, 60);
CGContextStrokePath(ctx);
}
}
// la fonction appelé qui devrait dessiner les 2 traits
-(void) redrawItContinu {
y += 1;
CGRect bounds = CGRectMake(0,0, 200.0,200.0);
[self setNeedsDisplayInRect:bounds];
}
Merci de votre aide
Jennifer
J'arrive à faire des traits mais je voudrais les faire un par un quand j'appuie sur un bouton. merci de votre aide.
-(void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
// premier trait
if (y == 1) {
CGContextSetRGBStrokeColor(ctx, 1, 0, 0, 1);
CGContextSetLineWidth(ctx, 1);
CGContextMoveToPoint(ctx, 0, 0);
CGContextAddLineToPoint(ctx, 30, 20);
CGContextStrokePath(ctx);
}
// deuxième trait
if (y == 2) {
CGContextSetRGBStrokeColor(ctx, 0, 0, 1, 1);
CGContextSetLineWidth(ctx, 1);
CGContextMoveToPoint(ctx, 30, 20);
CGContextAddLineToPoint(ctx, 10, 60);
CGContextStrokePath(ctx);
}
}
// la fonction appelé qui devrait dessiner les 2 traits
-(void) redrawItContinu {
y += 1;
CGRect bounds = CGRectMake(0,0, 200.0,200.0);
[self setNeedsDisplayInRect:bounds];
}
Merci de votre aide
Jennifer
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Voulez-vous dessiner d'abord un trait au 1er clic puis le second au 2ème clic ?
Ou bien voir l'animation du dessin des 2 traits ?
Eric
je veux qu'à chaque fois que je clique sur un bouton, un trait s'affiche x==1 puis x==2 etc
Merci
Jennifer
Actuellement avec votre procédure, il me semble que si y=1, seul le premier trait est dessiné et si y = 2, seul le second est dessiné.
A chaque DrawRect tout la fenêtre est redessinée.
Si vous voulez que les 2 traits soient dessinés au second clic, il faut écrire if (y >= 1) au lieu de (y == 1).
Eric
1) Si le view controller est dans le xib
Dans le contrôleur de la vue (un IUView controller qui contrôle la vue présentée) changer la signature de la méthode -(void) redawItContinu; en -(IBAction) redrawItContinu;
Cela permet à Interface Builder de prendre en compte cette méthode comme une action qui peut-être appelée par un clic sur un control (un bouton en l'occurence).
Faire la même transformation dans le .m
Dans IB, prendre un bouton dans la librairie et le déposer sur l'interface.
Ouvrir le panel 2 des infos et relier le Touch Up Inside au view controller . Choisir redrawItContinu dans le choix qui est offert quand on lache la souris.
2) Si le view controller a été créé dans le code
Créer un bouton par le code
puis définir le couple target/action
Philippe, cela ne change rien, il doit avoir une astuce avec
CGRect bounds = CGRectMake(x,y,KLargeurHauteur + 1.0, KLargeurHauteur +1.0);
[self setNeedsDisplayInRect:bounds];
je ne sais pas quoi y penser
Jennifer
Comment cela ça ne change rien. Normalement, si tu crées un bouton et que tu fais la connection correctement, et bien la méthode est exécutée !
Peut-être que ton histoire de bounds est mal calculée tout simplement.
Pourquoi ne pas faire [self setNeedsDisplay]Â ?