2010年3月17日水曜日

iPhoneアプリで画像をCGContextを使って直接描画するときに、上下反転しないように描画するには?

iPhoneアプリでCGContextを使って画像を直接描画するときに、CGContextDrawImageを使って描画すると、画像の上下が反転して描画されてしまう。

上下反転しないように描画するには、例えばこのようにする。

//描画の中心点
float cx = self.bounds.size.width/2;
float cy = self.bounds.size.height/2;

//画像をViewの中心に描画
UIImage *img = [UIImage imageNamed:@"image.png"];
if (img) {
 CGPoint posImg = CGPointMake(cx - img.size.width/2, cy - img.size.height/2);
 [img drawAtPoint:posImg];
 //[img drawAtPoint:posImg blendMode:kCGBlendModeNormal alpha:1.0];
}


コメントされている方のメソッドを使えば、ブレンドモードや透明度もコントロールしながら描画できる。

こう見ると、一応drawRect()の中で現在のCGContextRefを取得して描画していたが、この方法で画像を描画するだけならまったく必要なさそうだ。