2009-08-03 13 views
0

поворачивать мое изображение с:10 градусов поворот изображения отрезать

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; 

Когда я показываю изображение, я вижу его под 10 градусов, но изображение обрезается по краям.

Кто-нибудь знает, как это исправить? Вот изображение для уточнения.

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

Я пытался вчера весь день, но не могу понять это.

Другой пример изображения:

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

ответ

0

Я решил это сейчас, я должен изменить значение ширины/высоты границ и на х/у в CGContextDrawImage

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

Я знаю, что это решит проблему, но я думаю, что это не окончательное решение, так как вам, возможно, придется изменить эти значения на большие числа, поскольку вы увеличить размер преобразуемого изображения. Неужели вы случайно нашли реальное решение? Благодарю. – SpaceDog

0

Ваша проблема здесь якорь вашего CALayer, я не имею пример кода прямо здесь со мной, но если вы играете с якорным свойством вида CALayer вы должен иметь возможность получить представление так, как вы хотите. Я постараюсь опубликовать некоторые примеры кода позже

+0

Было бы здорово. – Ton

+0

У вас есть скриншоты с повернутым видом? я мог бы придумать, к чему должен быть привязан якорь, если я посмотрю на него – Daniel

+0

, предполагая, что это проблема: – Daniel

1

КОДА В 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 

код в 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 
} 

то т ake соединение в IB