0

我几乎没有尝试使用 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;
}

这有什么问题?为什么它不工作?谁能解释我?

4

1 回答 1

1

drawInRect 方法仅适用于文档中所写的当前图形上下文。

问题是您没有在当前图形上下文中绘图,因为您使用:

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 方法中加载图像,因为每次调用 draw 函数时都会加载图像。

于 2012-12-31T09:52:18.113 回答