2010-12-13 4 views
1

j'ai utilisé les codes ci-dessous pour faire pivoter une UIImagefaites pivoter UIImage et rien n'affiche

double angle = -90; 
NSData *imageData = [NSData dataWithContentsOfFile:sss]; 
UIImage *image =[UIImage imageWithData:imageData]; 
CGSize s = {image.size.width, image.size.height}; 
UIGraphicsBeginImageContext(s); 
CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextTranslateCTM(ctx, 0,image.size.height); 
CGContextScaleCTM(ctx, 1.0, -1.0); 
CGContextRotateCTM(ctx, 2*M_PI*angle/360); 
CGContextDrawImage(ctx,CGRectMake(0,0,image.size.width, image.size.height),image.CGImage); 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
[myUIImageView setImage:newImage]; 

mais rien n'affiche sur myUIImageView.

En cas de problème?

Bienvenue tout commentaire

Merci

InterDev

Répondre

2

Si vous allez à faire pivoter l'image de 90 degrés, vous devez échanger la largeur et la hauteur lorsque vous créez le contexte de l'image:

CGSize s = {image.size.height, image.size.width}; 

De cette façon, il y a suffisamment d'espace pour dessiner l'image entièrement transformée. Si vous tentez de dessiner une image dans un rectangle qui dépasse les limites d'un contexte graphique, cela ne donnera rien.

P.S. Je recommande d'utiliser un CGBitmapContext au lieu de UIGraphicsBeginImageContext(), comme le premier est thread-safe, ce qui signifie que vous seriez en mesure de faire vos manipulations d'image sur un fil de fond si vous le souhaitez.

+0

Oui, je veux dessiner une image pivotée dans un rectangle, comment afficher toute l'image pivotée? – arachide

+0

J'ai la solution! Merci – arachide

Questions connexes