我在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);
答案 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。