2016-05-06 5 views
2

滑らかなエッジを持つラウンドビットマップ(丸みのあるカラフルな画像で半径25の透明な四角形の50x50)を描画したいと思います。どうすればそれを処理できますか? (エッジが滑らかされていません)私はこれを試してみましたが、それは動作しません:ラウンドビットマップを描画するときのアンチエイリアシング

Paint p =new Paint(); 
p.setFilterBitmap(true); 
p.setAntiAlias(true); 
canvas.drawBitmap(bitmap, x - (bitmap.getWidth()/2), y - (bitmap.getWidth()/2), p); 
+0

ポストのスクリーンショットを作成することができますあなたはどうしたいですか? –

+0

設定しようp.setDither(true)......これは機能しますか? – Opiatefuchs

+0

私は試みましたが、p.setDither(true)は機能しません。 – Lucas

答えて

0

あなたは、コードの下にチェックして、いくつかの回避策

int w = bitmap.getWidth();           
int h = bitmap.getHeight(); 

int radius = Math.min(h/2, w/2);         
Bitmap output = Bitmap.createBitmap(w + 8, h + 8, Config.ARGB_8888); 

Paint p = new Paint();            
p.setAntiAlias(true);            

Canvas c = new Canvas(output);          
c.drawARGB(0, 0, 0, 0);            
p.setStyle(Style.FILL);            

c.drawCircle((w/2) + 4, (h/2) + 4, radius, p);     

p.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));     

c.drawBitmap(bitmap, 4, 4, p);          
p.setXfermode(null);             
p.setStyle(Style.STROKE);           
p.setColor(Color.WHITE);            
p.setStrokeWidth(3);             
c.drawCircle((w/2) + 4, (h/2) + 4, radius, p);     

return output; 

Source

関連する問題