2012-04-23 13 views
5

Birkaç gün boyunca bunu deniyorum. Bir sprite sayfası yükleyici oluşturuyorum, ancak spriteları da karşı yöne bakacak şekilde yükleyebilmem gerekiyor. Bu, zaten yüklediğim görüntüleri çevirmeyi içerir.Bir UIImage'ı çevirmeyi denediğim yolun nesi var?

UIImageOrientation/UIImageOrientationUpMirrored yöntemini kullanarak bunu yapmayı denedim, ancak bunun kesinlikle bir etkisi yoktur ve çerçeveyi daha önce olduğu gibi tam olarak aynı yönde çizer.

Daha sonra aşağıda içereceğim biraz daha karmaşık bir şekilde denedim. Ancak yine de, görüntüyü, uygulamaya yüklendiği gibi tam olarak çizer. (Yansıtılmamış).

Aşağıdaki yöntemi ekledim (yorumlarımın yanı sıra düşünce kalıbımı da takip edebilirsiniz), yanlış yaptığımı görebiliyor musunuz?

- (UIImage*) getFlippedFrame:(UIImage*) imageToFlip 
{ 
//create a context to draw that shizz into 
UIGraphicsBeginImageContext(imageToFlip.size); 
CGContextRef currentContext = UIGraphicsGetCurrentContext(); 



//WHERE YOU LEFT OFF. you're attempting to find a way to flip the image in imagetoflip. and return it as a new UIimage. But no luck so far. 
[imageToFlip drawInRect:CGRectMake(0, 0, imageToFlip.size.width, imageToFlip.size.height)]; 

//take the current context with the old frame drawn in and flip it. 
CGContextScaleCTM(currentContext, -1.0, 1.0); 

//create a UIImage made from the flipped context. However will the transformation survive the transition to UIImage? UPDATE: Apparently not. 

UIImage* flippedFrame = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return flippedFrame; 
} 

, Guy teşekkür ederiz.

cevap

6

İçeriğin dönüşümünü değiştirip sonra çizmeniz gerektiğini beklerdim. yorumuyla, bir kategori

kullanmak: Ayrıca,

CGContextTranslateCTM(currentContext, imageToFlip.size.width, 0);  
CGContextScaleCTM(currentContext, -1.0, 1.0); 
[imageToFlip drawInRect:CGRectMake(0, 0, imageToFlip.size.width, imageToFlip.size.height)]; 

NOT (açıklamalara dayanarak düzenlenmiş) ile

[imageToFlip drawInRect:CGRectMake(0, 0, imageToFlip.size.width, imageToFlip.size.height)]; 
CGContextScaleCTM(currentContext, -1.0, 1.0); 

yerine, negatif koordinatlara saygısız çünkü çevirmek gerekir, bu nedenle olur

@implementation UIImage (Flip) 
    - (UIImage*)horizontalFlip { 
    UIGraphicsBeginImageContext(self.size); 
    CGContextRef current_context = UIGraphicsGetCurrentContext();       
    CGContextTranslateCTM(current_context, self.size.width, 0); 
    CGContextScaleCTM(current_context, -1.0, 1.0); 
    [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height)]; 
    UIImage *flipped_img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return flipped_img; 
    } 
@end 
+0

Daha önce böyle bir şey denedim, ancak sanırım kafam karıştı ve içeriği yanlış yönde çevirdim (-imagetoflip.size.width). Ayrıca, daha önce ölçeklenmiş olarak tercüme ettim. Bu, nihayet çizildikten sonra görüntünün kaybolmasına neden oldu. Öneriniz aynı şeyi yapıyor, ancak görüntüyü en az değiştirdiğinden emin olduğumu düşünüyorum. Belki de sadece aradığım şeyi bulana kadar çeviriyi değiştirmem sorunumdur. –

+0

Ayrıca, çekirdek grafikler hakkında biraz bilgi sahibi olmanız durumunda, THEN'in çizdiği içeriği neden dönüştürdüğümüzü bana söyler misiniz? Bağlamı çizdiğinizi düşünürdüm, sonra da bunları birlikte dönüştürmek için bağlamı dönüştürdüm, ama bu görünüşe göre yanlıştır. –

+0

Oh, ve teşekkürler. –

İlgili konular