1

タイトルが示すように、円を示す画像がたくさんあります。問題は、画像が正方形であることです。円の周りの白い部分を透明にしたいと思います。これは画像の 1 つです。

ここに画像の説明を入力

残念ながら、スタック オーバーフローの背景が白であるため、白い領域は表示されません。4 つの白い角を削除する可能性はありますか (円内の要素の一部が白である可能性があるため、すべての白い領域を削除する必要はありません)。

フォトショップでは、「魔法の杖」ツールを使用します。助けてくれてありがとう。

4

1 に答える 1

2

角の半径を画像の幅または高さの半分に設定するだけです (もちろん、画像が正方形であると仮定します)。

#import <QuartzCore/QuartzCore.h>

imageView.layer.cornerRadius  = imageView.bounds.size.width;
imageView.layer.masksToBounds = YES;

そして、(追加の)ボーダーが好きなら:

imageView.layer.borderWidth = 0.5f;

次に、コメントを読んで、このイメージを取得します。

UIGraphicsBeginImageContext(imageView.layer.bounds.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

レンダリングされimageたものは、現在のレイヤーのサイズとまったく同じです。

スケールアップ時のピクセル化を防ぐには、次のことを試してください。

BOOL  opaque = NO;
short scale  = [[UIScreen mainScreen] scale];
UIGraphicsBeginImageContextWithOptions(view.bounds.size, opaque, scale);

またはおそらく別のスケールで。

于 2013-08-29T13:55:31.300 に答える