我很难尝试使用CoreGraphics学习新东西。我有一个下面的代码,并且没有使用drawInRect函数设置图像。
- (void)viewDidLoad
{
[super viewDidLoad];
imgView=[[UIImageView alloc]init];
[self drawRect:CGRectMake(10, 10, 20, 20)];
}
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed:@"RoseBunch.jpeg"];
UIGraphicsBeginImageContext(CGSizeMake(320, 480));
[img drawInRect:CGRectMake(0, 0, 50, 50)];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
imgView.image=resultingImage;
}
这有什么不对吗?为什么不工作?有谁能解释我?
答案 0 :(得分:1)
drawInRect方法仅适用于the documentation中所写的当前图形上下文。
因为您使用了以下内容,所以您没有在当前图形上下文中绘图:
UIGraphicsBeginImageContext(CGSizeMake(320, 480));
我建议你尝试这样的事情:
UIImage *img = [UIImage imageNamed:@"RoseBunch.jpeg"];
CGContextRef c = UIGraphicsGetCurrentContext();
[img drawInRect:CGRectMake(0, 0, 50, 50)];
CGImageRef contextImage = CGBitmapContextCreateImage(c);
UIImage *resultingImage = [UIImage imageWithCGImage:contextImage];
imgView.image=resultingImage;
CGImageRelease(contextImage); //Very important to release the contextImage otherwise it will leak.
还有一件非常重要的事情:你不应该在draw方法中加载Image,因为每次调用draw函数时都会加载图像。