在android中绘制带边框的填充矩形

Uwa*_*bal 47 android border paint fill android-canvas

Android中是否有任何方法可以绘制带有黑色边框的填充矩形.我的问题是canvas.draw()接受一个绘制对象,据我所知,绘制对象不能有填充和描边的不同颜色.有没有解决的办法?

wan*_*nik 130

试试油漆.使用setStyle(Paint.Style.FILL)和油漆.的setStyle(Paint.Style.STROKE).

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);
}
Run Code Online (Sandbox Code Playgroud)

  • 我知道答案是旧的,但我想分享这个小行paint.setPathEffect(new CornerPathEffect(radius)); 回答克里斯的问题.我只是回答因为可能有人需要帮助. (5认同)

Sur*_*gch 28

如果要绘制多个视图,则还可以使用两个绘制,一个用于笔划,一个用于填充.这样你就不必继续重置它们了.

在此输入图像描述

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
}
Run Code Online (Sandbox Code Playgroud)


yDe*_*uis 1

您使用边框的颜色和矩形加上边框的大小绘制一个矩形,更改油漆的颜色并再次绘制具有正常大小的矩形。

  • 请注意,这会导致同一区域绘制几乎两次 (17认同)