2016-08-02 12 views
-1

Ich versuche, die Farbe eines Bereichs meiner UIImage mit CGContext zu ändern und dann ein neues Bild aus dem aktuellen Zustand zu erstellen. Das Originalbild hat die richtige Ausrichtung, aber danach dreht sich das Bild seitwärts.Warum dreht CGContextDrawImage mein Bild

CGRect imageRect = CGRectMake(0, 0, originalImage.size.width, originalImage.size.height); 

UIGraphicsBeginImageContextWithOptions(originalImage.size, false, originalImage.scale); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSaveGState(context); 
CGContextDrawImage(context, imageRect, originalImage.CGImage); 
CGContextSetRGBFillColor(context, 255.0f, 255.0f, 255.0f, 1.0f); 
CGContextFillRect(context, CGRectMake(5,5,100,100)); 
CGContextRotateCTM (context, radians(270)); 
CGContextRestoreGState(context); 
UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 

Antwort

0

Es ist eine sehr einfache Frage.

Da iOS-System hat 3 verschiedene Koordinatensystem.

UIKit - Y-Achsenrichtung ist nach unten Core Graphics (Quarz) - y-Achsenrichtung beträgt bis OpenGL ES - y-Achsenrichtung beträgt bis

Die originalImage von UIKit erstellen ist und das Zielbild von Core erstellen Grafiken, also sollte es auf dem Kopf stehen.

Wenn Sie das richtige Bild erhalten möchten, können Sie verwenden:

UIImageView* imageV = [[UIImageView alloc] initWithFrame:CGRectMake(100,100, 100, 100)]; 
imageV.layer.borderColor = [UIColor redColor].CGColor; 
imageV.layer.borderWidth = 1; 
imageV.image = img; 
imageV.layer.transform = CATransform3DRotate(imageV.layer.transform, M_PI, 1.0f, 0.0f, 0.0f); 
[self.view addSubview:imageV]; 

Hoffe, es kann Ihnen helfen.