Android中的drawRoundRect无法正常工作

时间:2017-01-12 05:32:50

标签: java android android-canvas android-custom-view

我想在Android中使用drawRoundRect方法绘制一个圆角矩形。

for loop

我正在使用Android Studio,我的测试设备使用Android 6.0.1,API 23

这是我的代码的一部分。当我在rx和ry中放置零时,它可以找到。

void drawRoundRect (RectF rect, float rx,  float ry, Paint paint)

这会在我的屏幕上绘制一个黑色矩形。

但是当我试图将其四舍五入时,

public void draw(Canvas canvas){
        canvas.drawColor(Color.WHITE);
        canvas.drawRoundRect(rect, 0, 0, pnt);
}
它没有任何吸引力。这只画了白色背景......

我在rx和ry中尝试了不同的数字,如100,3,5,0.03f等,

但是任何大于0的数字都会使drawRoundRect()无效。

我的代码有什么问题......?

3 个答案:

答案 0 :(得分:0)

你可以尝试这个我们有一点计算,但它的工作非常棒

private void drawRoundedRect(Canvas canvas, float left, float top, float right, float bottom) {
    float radius = getHeight() / 2;
    canvas.drawCircle(radius, radius, radius, mainPaint);
    canvas.drawCircle(right - radius, radius, radius, mainPaint);
    canvas.drawRect(left + radius, top, right - radius, bottom, mainPaint);
}

或者您可以查看

RectF rect = new RectF(10,10,20,20);
canvas.drawRoundRect(rect , 0, 0, mPaint);

答案 1 :(得分:0)

试试这个,

Bitmap bitmap = Bitmap.createBitmap(
                        600, // Width
                        300, // Height
                        Bitmap.Config.ARGB_8888 // Config
                );

                Canvas canvas = new Canvas(bitmap);
                canvas.drawColor(Color.WHITE);
                Paint paint = new Paint();
                paint.setStyle(Paint.Style.FILL);
                paint.setColor(Color.RED);
                paint.setAntiAlias(true);

                int offset = 50;
                RectF rectF = new RectF(
                        offset, // left
                        offset, // top
                        canvas.getWidth() - offset, // right
                        canvas.getHeight() - offset // bottom
                );
                int cornersRadius = 25;
                canvas.drawRoundRect(
                        rectF, // rect
                        cornersRadius, // rx
                        cornersRadius, // ry
                        paint // Paint
                );
                mImageView.setImageBitmap(bitmap);

答案 2 :(得分:0)

您可以这样做

RectF rect = new RectF(0f, 0f, width, height);

canvas.drawRoundRect(rect , 0, 0, mPaint);