Y a-t-il un moyen dans Android pour dessiner un rectangle rempli avec par exemple une bordure noire. Mon problème est que le canvas.draw () prend un objet Paint, et à ma connaissance l'objet Paint peut ' t avoir une couleur différente pour le fond et le contour. Y a-t-il un moyen de contourner cela?
Vous dessinez un rectangle avec la couleur de la bordure et la taille du rectangle plus la bordure, vous changez la couleur de la peinture et dessinez à nouveau le rectangle avec la taille normale.
Essayez Paint .setStyle (Paint.Style . FILL ) et Paint .setStyle (Paint.Style . COURSE ).
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);
}
Si vous dessinez plusieurs vues, vous pouvez également utiliser deux peintures, une pour le trait et une pour le remplissage. De cette façon, vous ne devez pas continuer à les réinitialiser.
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
}