drawAtPoint:blendMode:alpha: l'image ne s'affiche pas

apocaalypsoapocaalypso Membre
11:26 modifié dans API UIKit #1
Bonjour,

J'ai un petit problème dans mon application. L'utilisateur choisi une image grâce au UIImagePickerController et je souhaiterai modifier celle-ci avec le blendMode. Voici mon code :

- (void)imagePickerController:(UIImagePickerController *)imgPicker didFinishPickingMediaWithInfo:(NSDictionary *)info<br />{<br />	[[imgPicker parentViewController] dismissModalViewControllerAnimated:YES];<br /><br />	UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];<br />&nbsp; &nbsp; &nbsp; &nbsp; // Resize the image<br />	image = resizedImage(image, CGRectMake(0, 0, 240, 128));	<br />	<br />	[image drawAtPoint:CGPointMake(10, 100) blendMode:kCGBlendModeColorBurn alpha:1.0];<br />}


Mais l'image ne s'affiche pas, je crois que ça peut venir d'un manque de context mais je ne suis pas sûr de cela. Et puis s'il y a un moyen plus simple pour avoir un blendMode je suis preneur.

Merci d'avance !

Réponses

  • AliGatorAliGator Membre, Modérateur
    11:26 modifié #2
    Je confirme c'est certainement un problème de contexte.

    Tu es dans la méthode ... didFinishPickingMediaWithInfo: qui est une méthode de delegate appellée quand l'utilisateur a choisi son image, et n'est pas du tout une méthode appelée lors de la boucle de dessin.
    Il faut que tu stockes ton image (avec ou sans le blending, à  la limite pour l'instant sans le blending) dans une variable de type UIImage* puis que tu mettes ton code drawAtPoint:blendMode dans le drawRect plutôt.
  • apocaalypsoapocaalypso Membre
    11:26 modifié #3
    J'ai mis ça dans le drawRect: en ajoutant [self.view setNeedsDisplay] dans ma méthode de delegate mais ça n'a pas l'air de marcher.
  • apocaalypsoapocaalypso Membre
    11:26 modifié #4
    J'ai fait ça mais ça ne marche toujours pas :

    CGImageRef imageR = [image CGImage];<br />	CGRect myRect = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);<br />	CGContextRef myContext = UIGraphicsGetCurrentContext();<br />	CGContextDrawImage(myContext, myRect, imageR);	<br />	CGContextSetBlendMode(myContext, kCGBlendModeDarken);<br />	<br />	imageView.image = UIGraphicsGetImageFromCurrentImageContext();
    
Connectez-vous ou Inscrivez-vous pour répondre.