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.

もう1つ重要なことは、draw関数が呼び出されるたびに画像が読み込まれるため、drawメソッドで画像を読み込むべきではないということです。

于 2012-12-31T09:52:18.113 に答える