Faire des beaux traits à  chaque bouton

Jennifer75aJennifer75a Membre
05:07 modifié dans API UIKit #1
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

Réponses

  • Eric P.Eric P. Membre
    05:07 modifié #2
    Bonjour,

    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
  • Philippe49Philippe49 Membre
    05:07 modifié #3
    J'ai du mal à  voir ton problème ? connecter un bouton ? ou le code que tu proposes ?
  • Jennifer75aJennifer75a Membre
    05:07 modifié #4
    Bonjour,

    je veux qu'à  chaque fois que je clique sur un bouton, un trait s'affiche x==1 puis x==2 etc

    Merci

    Jennifer
  • Eric P.Eric P. Membre
    05:07 modifié #5
    Bonjour,

    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
  • Philippe49Philippe49 Membre
    05:07 modifié #6
    dans 1241781035:

    Bonjour,

    je veux qu'à  chaque fois que je clique sur un bouton, un trait s'affiche x==1 puis x==2 etc

    Merci

    Jennifer



    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
    myButton=[[UIButton alloc] initWithFrame:unRect];
    

    puis définir le couple target/action
    [myButton addTarget:self action:@selector(redrawItContinu) forControlEvents:UIControlEventTouchUpInside];
    


  • Jennifer75aJennifer75a Membre
    05:07 modifié #7
    Bonsoir à  tous.

    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
  • Philippe49Philippe49 Membre
    mai 2009 modifié #8
    dans 1241802100:

    Philippe, cela ne change rien, il doit avoir une astuce avec


    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]   ?

Connectez-vous ou Inscrivez-vous pour répondre.