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

