なんとなく

誰得感満載な記事が多いかも。Mono関係とLinuxのサーバ関係、レビューとか。

Bitmapを角丸に

チャット用のアバターのアイコン画像の角を丸くしようと思っていて、当初は、Y.A.M の 雑記帳: Android ImageViewの領域を角丸にする方法
を見て、こちらを試してみようと思っていたのだけれども、さらに検索していたら、コードで実装している方がいた。
ImageView を 簡単に 角丸 にする
試してみたら、簡単に実装できたので参考にさせていただいた。

private static Bitmap GetCroppedBitmap(Bitmap bitmap)
{
	int width  = bitmap.Width;
	int height = bitmap.Height;

	Rect rect   = new Rect(0, 0, width, height);
	RectF rectf = new RectF(0, 0, width, height);

	Bitmap output = Bitmap.CreateBitmap(width, height,Bitmap.Config.Argb8888);
	Canvas canvas = new Canvas(output);

	Paint paint = new Paint();
	paint.AntiAlias = true;

	canvas.DrawRoundRect(rectf, width / 5, height / 5, paint);
	paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcIn));
	canvas.DrawBitmap(bitmap, rect, rect, paint);
	return output;
}

C#にするとこんな感じ。

イメージ的には、角丸にしない場合とした場合は以下。
f:id:takeshich:20140502163340p:plain
f:id:takeshich:20140503172951p:plain

おもしろいな。こう見ると1dpxあけたほうがいいとかいろいろあるなぁ。

アプリとしてデザイン面での工夫点でした。