Dessiner un rectangle rempli avec une bordure dans android
Est - il possible dans Android de dessiner un rectangle rempli avec, disons, une bordure noire. Mon problème est que la toile.draw() prend un objet de peinture, et à ma connaissance l'objet de peinture ne peut pas avoir une couleur différente pour le remplissage et le trait. Est-il un moyen de contourner cela?
3 réponses
Vous dessinez un rectangle avec la couleur de la bordure et la taille du rectangle plus de la frontière, vous changez la couleur de la peinture et dessiner le rectangle à la taille normale.
Essayez la peinture.setStyle (Peinture.Style.remplir ) et peindre.setStyle (Peinture.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 n'avez pas à 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
}