CoreGraphics 画像の描画
CoreGraphicsを使って, 画像を描画します。画像であればUIImageViewでやれよというのが本音ですが, CoreGraphicsであればもう少し工夫ができる….
気がします。
CGContextDrawImageを使います。引数にUIImageを使うので, UIImageはどこかで確保しておく必要があります。
あとなぜか座標系が逆になっていて, CGContextConcatCTM でうまく処理をしないと正しい方向に表示されません。
(MacCocoaだとそのまま何ですが… 座標系がMac Cocoaと比べると基本的に逆なんですよね上下。)
ヘッダ
DrawImageView.h
#import <UIKit/UIKit.h> @interface DrawImageView : UIView @property(nonatomic)UIImage *img; @end
本体
#import "DrawImageView.h" @implementation DrawImageView @synthesize img; - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code self.img = [UIImage imageNamed:@"mikasa.jpeg"]; } return self; } - (void)drawRect:(CGRect)rect { // Drawing code CGContextRef context = UIGraphicsGetCurrentContext(); CGSize s = [img size]; CGRect r = CGRectMake(0, 0, s.width, s.height); CGAffineTransform affine = CGAffineTransformIdentity; affine.d = -1.0f; affine.ty = s.height; CGContextConcatCTM(context, affine); CGContextDrawImage(context, r, [img CGImage]); } @end