圆角边缘不平滑(在android中使用drawRoundRectangle)

时间:2014-02-13 06:52:32

标签: android android-canvas

我在Canvas中使用drawRoundRect函数绘制圆角矩形。当x和y半径小如3时,曲线看起来很平滑。但是当我将半径增加到20时,边缘不平滑并且看起来不太好。有人能帮助我吗?

我的构造函数中有以下代码

 paint= new Paint(Paint.ANTI_ALIAS_FLAG);
            paint.setColor(Color.RED); // set default color to white 
            Bitmap src = BitmapFactory.decodeResource(getResources(),R.drawable.texture);   
            Rect tempRect = new Rect(0, 0, src.getWidth(), src.getHeight());
            Bitmap tile = Bitmap.createBitmap(src, tempRect.left,
                    tempRect.top, tempRect.right - tempRect.left,
                    tempRect.bottom - tempRect.top);
            BitmapShader bs = new BitmapShader(tile, TileMode.REPEAT, TileMode.REPEAT);
            paint.setShader(bs);
            rect=new RectF(20,20,600,200);

在onDraw我正在打电话

canvas.drawRoundRect(rect, 20, 20, paint);

2 个答案:

答案 0 :(得分:0)

要绘制平滑的边角,请使用抗锯齿..

final Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(color);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));

然后使用

canvas.drawRoundRect(rect, 20, 20, paint);

答案 1 :(得分:0)

我意识到这已经过时了。但问题是重新绘制。 由于抗锯齿的工作原理,如果重绘一个形状而不先清除位图。这导致粗糙的边缘。我已经更详细地介绍了这一点here