2016-05-06 21 views
2

Ich möchte eine runde Bitmap (transparentes Quadrat 50x50 mit runden farbenfrohes Bild von einem Radius 25 in einer Mitte) mit glatten Kanten zeichnen. Wie kann ich damit umgehen? Ich versuchte dies, aber es funktioniert nicht (Kanten nicht glatt):Anti-Aliasing beim Zeichnen von runden Bitmap

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

Beitrag Screenshot machen müssen wie Sie möchten? –

+0

versuche p.setDither (true) zu setzen ...... funktioniert das? – Opiatefuchs

+0

Ich habe versucht, aber p.setDither (true) funktioniert nicht. – Lucas

Antwort

0

Sie können unter Code überprüfen und einige Abhilfe

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