2009-08-03 8 views
0

je tourne mon image avec:image rotation 10 degrés coupé

UIImage *image = [UIImage imageNamed:@"doneBtn.png"]; 
CGImageRef imgRef = image.CGImage; 

CGFloat width = CGImageGetWidth(imgRef); 
CGFloat height = CGImageGetHeight(imgRef); 

CGAffineTransform transform = CGAffineTransformIdentity; 
CGRect bounds = CGRectMake(0, 0, width, height); 
transform = CGAffineTransformRotate(transform, degreesToRadians(10)); 

UIGraphicsBeginImageContext(bounds.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextConcatCTM(context, transform); 

CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0,0,width,height), imgRef); 
UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

img.image=imageCopy; 

Quand j'afficher l'image, je vois sous mon 10 degrés, mais l'image est coupée sur les bords.

Est-ce que quelqu'un sait comment résoudre ce problème? Voici une image pour la clarification.

alt text http://img197.imageshack.us/img197/7077/problemkfr.png

J'ai essayé toute la journée hier, mais ne peut pas comprendre.

Un autre exemple d'image:

alt text http://img25.imageshack.us/img25/3370/afbeelding6b.png

Répondre

0

Je l'ai résolu maintenant, je dois changer la valeur largeur/hauteur des limites et x/y dans CGContextDrawImage

CGRect bounds = CGRectMake(0, 0, width+10, height+10); 
CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(10,0,width,height), imgRef); 
+0

Je sais que cela va résoudre le problème, mais je pense que ce n'est pas une solution finale, car vous devrez peut-être changer ces valeurs augmenter la taille de l'image en cours de transformation. Avez-vous par hasard trouvé la vraie solution pour cela? Merci. – SpaceDog

0

Votre problème ici est l'ancre de votre CALayer, je n'ai pas exemple de code ici avec moi, mais si vous jouez avec la propriété d'ancrage du CALayer de vue que vous devrait être en mesure d'obtenir la vue de ressembler à ce que vous voulez. Je vais essayer de poster quelques exemples de code plus tard

+0

Serait grand merci. – Ton

+0

Avez-vous des captures d'écran de la vue pivotée? Je pourrais être en mesure de trouver ce que l'ancre doit être réglé si je regarde – Daniel

+0

en supposant que c'est quel est le problème :) – Daniel

1

CODE EN SliderAppViewController.h

#import <UIKit/UIKit.h> 

@interface SliderAppViewController : UIViewController { 
    IBOutlet UIImageView *imgView; 
    IBOutlet UISlider *mySlider; 
} 
@property (nonatomic, retain) IBOutlet UISlider *mySlider; 
- (IBAction) sliderValueChanged:(id)sender; 

@end 

CODE DANS SliderApp.m

#import "SliderAppViewController.h" 

@implementation SliderAppViewController 
@synthesize mySlider; 

- (IBAction) sliderValueChanged:(UISlider *)sender { 

    imgView.transform = CGAffineTransformMakeRotation(45); 

} 
- (void)viewDidLoad { 
    mySlider.minimumValue = 1.0; 
    mySlider.maximumValue = 100.0; 

     //other code 
} 

puis m Ake connexion dans IB