6

長方形の画像があるとします。次のようなスタイルを作りたいですか?イメージからサークルクリッパを作成する方法は?

enter image description here enter image description here

Iは、影とグロス/輝き効果を境界線を追加し、円形に画像をクロッピング、意味します。これまでは、画像を切り抜くためにこのスニペットコードを試しただけです:Cropping circular area from bitmap in Androidしかしそれだけです。私はAndroidの残りのコンポーネントをどうやってやるのか分かりません。

+0

私はラウンドコーナーの実装を投稿し、それがあなたを助けてくれることを願っています。http://stackoverflow.com/a/19858771/1294681 – VinceStyling

答えて

16

この効果を達成するための簡単な方法は、Canvas.drawCircle()BitmapShaderを使用することです:

BitmapShader s = new BitmapShader(myPhoto, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); 

Paint p = new Paint(); 
p.setShader(s); 

myCanvas.drawCircle(centerX, centerY, radius, p); 

影を行うには、あなたがオフスクリーンに効果を引き出す場合は、単純に(これはのみ動作します塗料にPaint.setShadowLayer()を呼び出しますBitmapまたはViewがソフトウェア層を使用する場合 - View.setLayerType() - を呼び出して設定します)。

Paint.Style.STROKEスタイル(Paint.setStyle()を呼び出すことによって設定できる)を使用して、上に別の円を描くことによって、境界線を描くことができます。

最後に、あなたの最初の円の上に円形、楕円形またはPathを描くことによって光沢を描くことができます。あなたのペイントにLinearGradientシェーダを使用する必要があります。また、光沢をクリップする必要があります。次の2つの方法でこれを行うことができます:

あなたは私が推薦するものです Bitmap、に全体の効果を描画している場合
  1. 、単に塗料のXfermodenew PorterDuffXfermode(PorterDuff.Mode.SRC_IN)に設定します。
  2. 効果を直接画面に描画する場合は、Canvas.clipPath()を使用して円形のクリップを設定するだけです。これは、Android 4.3以降のハードウェアアクセラレーションでのみ機能することに注意してください。
関連する問題