Hatta bahsettiğim her şeyi uygulandıktan sonra, hala görüntülerle dramalar yaşadım. Sonunda, ben sadece tüm görüntülerin bir 'çevrilmiş dikey' versiyonunu yaratmak için Gimp kullandım. Şimdi herhangi dönüşümleri kullanmaya gerek yoktur. Umarım bu parça altındaki sorunlara neden olmaz.
CGContextDrawImage baş aşağı Resmimi çizim nedenlerine bilen var mı? Benim uygulamadan bir görüntü yüklenirken ediyorum:
Quartz2d kökenli sol alt köşesinde Farklı koordinat sistemini kullanır. Böylece Kuvars 100 x 100 görüntünün piksel x [5] y [10], o piksel sol alt köşesinde yerine sol üst çizilmiş olan çektiğinde. Bu nedenle, 'ters çevrilmiş imajını neden olur.
Eğer y koordinatlarını çevirmek gerekir böylece x-koordinatı sistemi, eşleşir.
CGContextTranslateCTM(context, 0, image.size.height);
Bu, X ekseni üzerinde 0 birimleri ve y ekseni üzerinde görüntüler yüksekliği ile görüntü tercüme anlamına gelir. Ancak bu tek başına çekilecek hala baş aşağı, sadece onu diliyorum yerin altındaki "image.size.height" çizilmiş olan imajımızı anlamına gelecektir.
Quartz2D programlama kılavuzu ScaleCTM kullanarak ve Resimleri çevirmek negatif değerler geçirmeden önerir. Bunu yapmak için aşağıdaki kodu kullanabilirsiniz -
CGContextScaleCTM(context, 1.0, -1.0);
Sadece daha önce iki birleştirin CGContextDrawImageçağrı ve görüntü doğru çizilmiş olmalıdır.
UIImage *image = [UIImage imageNamed:@"testImage.png"];
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);
CGContextTranslateCTM(context, 0, image.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, imageRect, image.CGImage);
Eğer istenmeyen sonuçlar alabilirsiniz olarak imageRect koordinatlar, görüntünüzün eşleşmiyor eğer Sadece dikkatli olun.
Koordinatları geri dönüştürmek için:
CGContextScaleCTM(context, 1.0, -1.0);
CGContextTranslateCTM(context, 0, -imageRect.size.height);