绘制一个矩形,填充在Android上边界(Drawing a filled rectangle wi

2019-07-04 02:25发布

是否有Android的任何方式绘制填充矩形说黑色边框。 我的问题是,canvas.draw()需要一个喷漆的对象,而据我所知,喷漆的对象不能有不同颜色的填充和笔触。 有没有解决的办法?

Answer 1:

你画与边框的颜色和矩形加边框的大小的矩形,你改变油漆的颜色,并与正常大小再次绘制矩形。



Answer 2:

尝试油漆。 使用setStyle(Paint.Style。FILL)和油漆。 的setStyle(Paint.Style。 行程 )。

Paint paint = new Paint();
Rect r = new Rect(10, 10, 200, 100);

@Override
public void onDraw(Canvas canvas) {
    // fill
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.MAGENTA); 
    canvas.drawRect(r, paint);

    // border
    paint.setStyle(Paint.Style.STROKE);
    paint.setColor(Color.BLACK);
    canvas.drawRect(r, paint);
}


Answer 3:

如果您绘制多个视图,那么你也可以使用两种漆,一个用于中风和一个用于填充。 你不必这样,让他们复位。

Paint fillPaint = new Paint();
Paint strokePaint = new Paint();

RectF r = new RectF(30, 30, 1000, 500);

void initPaints() {

    // fill
    fillPaint.setStyle(Paint.Style.FILL);
    fillPaint.setColor(Color.YELLOW);

    // stroke
    strokePaint.setStyle(Paint.Style.STROKE);
    strokePaint.setColor(Color.BLACK);
    strokePaint.setStrokeWidth(10);
}

@Override
protected void onDraw(Canvas canvas) {

    // First rectangle
    canvas.drawRect(r, fillPaint);    // fill
    canvas.drawRect(r, strokePaint);  // stroke

    canvas.translate(0, 600);

    // Second rectangle
    int cornerRadius = 50;
    canvas.drawRoundRect(r, cornerRadius, cornerRadius, fillPaint);    // fill
    canvas.drawRoundRect(r, cornerRadius, cornerRadius, strokePaint);  // stroke
}


文章来源: Drawing a filled rectangle with a border in android