Есть ли какой-либо способ в Android рисовать заполненный прямоугольник с черной рамкой. Моя проблема заключается в том, что canvas.draw() принимает один объект paint, и, насколько мне известно, объект paint не может иметь другой цвет для заливки и штриха. Есть ли способ обойти это?
Рисование заполненного прямоугольника с рамкой в android
Ответ 1
Вы рисуете прямоугольник с цветом границы и размером прямоугольника плюс границу, вы меняете цвет краски и снова рисуете прямоугольник с нормальным размером.
Ответ 2
setStyle (Paint.Style. FILL) и нарисуйте. setStyle (Paint.Style. STROKE strong > ).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);
}
Ответ 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
}