116 votes

Dessiner un rectangle dans un canevas Android

Comment dessiner un rectangle vide avec etc. borderWidth=3 et borderColor=black et la partie à l'intérieur du rectangle n'a pas de contenu ou de couleur. Quelle fonction de Canvas utiliser

void drawRect(float left, float top, float right, float bottom, Paint paint)

void drawRect(RectF rect, Paint paint)

void drawRect(Rect r, Paint paint)

Merci.

J'essaie cet exemple

Paint myPaint = new Paint();
myPaint.setColor(Color.rgb(0, 0, 0));
myPaint.setStrokeWidth(10);
c.drawRect(100, 100, 200, 200, myPaint);

Il dessine un rectangle et le remplit de noir, mais je veux juste un "cadre" autour. comme cette image :

enter image description here

170voto

pandur Points 721

Essayer paint.setStyle(Paint.Style.STROKE) ?

129voto

DonGru Points 6677

En supposant que " la partie à l'intérieur du rectangle n'a pas de couleur de contenu "signifie que vous voulez différents remplissages à l'intérieur du rectangle ; vous devez alors dessiner un rectangle à l'intérieur de votre rectangle avec une largeur de trait de 0 et la (les) couleur(s) de remplissage souhaitée(s).

Par exemple :

DrawView.java

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class DrawView extends View {
    Paint paint = new Paint();

    public DrawView(Context context) {
        super(context);            
    }

    @Override
    public void onDraw(Canvas canvas) {
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(3);
        canvas.drawRect(30, 30, 80, 80, paint);
        paint.setStrokeWidth(0);
        paint.setColor(Color.CYAN);
        canvas.drawRect(33, 60, 77, 77, paint );
        paint.setColor(Color.YELLOW);
        canvas.drawRect(33, 33, 77, 60, paint );

    }

}

L'activité de démarrage :

StartDraw.java

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;

public class StartDraw extends Activity {
    DrawView drawView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        drawView = new DrawView(this);
        drawView.setBackgroundColor(Color.WHITE);
        setContentView(drawView);

    }
}

...se déroulera de cette manière :

enter image description here

13voto

Cristopher Loli Points 91
//white background
canvas.drawRGB(255, 255, 255);
//border's properties
paint.setColor(Color.BLACK);
paint.setStrokeWidth(0);        
paint.setStyle(Paint.Style.STROKE);         
canvas.drawRect(100, 100, 200, 200, paint);

6voto

Kenny Lim Points 521
paint.setStrokeWidth(3);

paint.setColor(BLACK);

et l'un ou l'autre de vos drawRect devrait fonctionner.

-1voto

Steven Points 1

Je ne sais pas si c'est trop tard, mais la façon dont j'ai résolu le problème a été de dessiner quatre rectangles fins qui, ensemble, formaient une grande bordure. Dessiner la bordure avec un seul rectangle semble impossible puisqu'ils sont tous opaques, vous devez donc dessiner chaque bord de la bordure séparément.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X