2009-08-03 6 views
0

ich drehe mein Bild mit:10 Grad Drehung Bild abgeschnitten

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; 

Wenn ich das Bild anzuzeigen, ich sehe es unter meinem 10 Grad, aber das Bild an den Kanten abgeschnitten.

Kann jemand das beheben? Hier ist ein Bild zur Verdeutlichung.

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

Ich habe gestern den ganzen Tag versucht, aber kann es nicht herausgefunden.

Ein weiteres Beispiel Bild:

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

Antwort

0

ich es jetzt gelöst, muss ich den Wert Breite/Höhe der Grenzen und die x/y in CGContextDrawImage

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

Ich weiß, dass dies das Problem lösen wird, aber ich denke, es ist keine endgültige Lösung, wie Sie diese Werte zu größeren Zahlen als Sie ändern müssen Erhöhen Sie die Größe des zu transformierenden Bildes. Haben Sie zufällig die richtige Lösung dafür gefunden? Vielen Dank. – SpaceDog

0

Ihr Problem hier ist der Anker Ihrer CALayer, ich nicht mit mir hier Beispiel-Code haben, aber wenn Sie mit dem Anker Eigenschaft der CALayer Ansicht spielen Sie sollte in der Lage sein, die Aussicht so aussehen zu lassen, wie Sie es möchten. Ich werde versuchen, und poste später einige Beispielcode

+0

Wäre super danke. – Ton

+0

hast du Screenshots der gedrehten Ansicht? Ich könnte in der Lage zu kommen, was der Anker gesetzt werden muss, wenn ich es sehe – Daniel

+0

unter der Annahme, dass das ist, was das Problem ist :) – Daniel

1

CODE IN SliderAppViewController.h

ändern
#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 IN 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 
} 

dann m Ake Verbindung in IB