2010-12-01 4 views
0

J'essaie de tracer une ligne au-dessus d'une image de fond dans mon UIView en traçant les mouvements du doigt de l'utilisateur. Je peux accomplir cela en dessinant l'UIImage comme arrière-plan et en faisant ensuite mon dessin au trait dans drawRect mais je dois charger l'image à chaque fois que drawRect est appelé et cela ralentit les performances. Sinon, si j'utilise une UIImageView comme image d'arrière-plan (en l'ajoutant à la vue dans IB ou par programmation), les lignes disparaissent quand elles sont déplacées sur l'image. Est-il possible de dire aux lignes de dessiner sur le UIImageView. Merci de votre aide.Comment dessiner une ligne au-dessus d'une image lorsque le doigt bouge sur l'iPhone

Voici mon code en utilisant la méthode UIImage:

- (void)drawRect:(CGRect)rect { 
    UIImage *imageField = [UIImage imageNamed:@"field.jpg"]; 
    CGRect rectForImage=CGRectMake(0,0,200,200); 
    [imageField drawInRect:rectForImage]; 

     CGContextRef context = UIGraphicsGetCurrentContext(); 
     CGContextMoveToPoint(context, x1, y1); 
    CGContextAddLineToPoint(context, x2, y2); 
    CGContextStrokePath(context); 
} 

Répondre

1

Ajout de l'image comme la vue d'arrière-plan est la bonne façon de le faire. Le problème réside dans le fait que vous avez ajouté l'image directement à la vue. Les sous-vues sont affichées en haut d'une vue, pas derrière. Utilisez correctement une vue de conteneur qui contient la vue de l'image en tant qu'arrière-plan, puis votre vue de dessin au trait sur celle-ci.

+0

Merci David. Travaillé comme un charme. (Activez la propriété Opaque sur la nouvelle vue). – JMH

1

Vous pouvez essayer de dessiner vos lignes (opaques) sur un CALayer transparent et de placer ce CALayer sur votre UIView, donc au-dessus de l'UIImage de fond.

Questions connexes