4

別の画像の画像マスクとして使用しているpngがあります。どちらの画像も角が丸くなっており、resizableImageWithCapInsets: で保持されています。画像 (マスクではない) は、UIProgressView の progressImage であるため、自動的にサイズ変更されます。

私が抱えている問題は、CGImageMaskCreate を使用してマスクを作成し、単純に UIProgressView の幅の幅を指定すると、マスク イメージが引き伸ばされる (つまり、キャップが保持されない) ことです。

私がやりたいのは、サイズ変更可能なキャップを使用して新しい UIImage を作成し、手動で画像のサイズを変更し (おそらく UIImageView に入れることによって)、マスク画像のサイズ変更されたバージョンのデータ表現を取得し、それを使用して新しい画像を作成することですデータを取得し、その画像をマスクとして使用します。ただし、画像を使用して UIImageView を作成し、UIImageView のフレームを適切に設定しても、画像をビューから戻すと元の画像が得られるようです。

resizableImageWithCapInsets: 画像を実際に UI に描画せずに結果を取得する方法はありますか?

4

2 に答える 2

0
- (UIImage*) drawImage:(UIImage *)image
                atSize:(CGSize) size
{
    UIGraphicsBeginImageContext(size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];

    CGImageRef cgImage = CGBitmapContextCreateImage(context);
    UIImage *outImage = [UIImage imageWithCGImage:cgImage];

    CGImageRelease(cgImage);
    UIGraphicsEndImageContext();

    return outImage;
}
于 2013-03-13T09:39:57.943 に答える
0

データプロバイダーにアクセスしたり、UIImageを作成してNSDataを抽出したりできるCGContextに画像を1つずつ描画してみます

于 2012-08-09T04:58:08.590 に答える