comment dessiner un rectangle vide avec etc. borderWidth = 3 et borderColor = black et une partie du rectangle n'ont ni contenu ni couleur. Quelle fonction utiliser dans Canvas?
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'essaye 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 couleur noire mais je veux juste "encadrer" autour comme cette image:
Essayez Paint.setStyle(Paint.Style.STROKE)
?
En supposant que "partie dans le rectangle n'a pas de couleur de contenu" signifie que vous voulez différents remplissages dans le rectangle; vous devez dessiner un rectangle dans votre rectangle, puis avec la largeur de trait 0 et la ou les couleurs de remplissage désirées.
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é pour le démarrer:
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 façon:
//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);
Créez une nouvelle classe MyView, Which extends View
. Remplacez la méthode onDraw(Canvas canvas)
pour dessiner un rectangle sur Canvas
.
import Android.content.Context;
import Android.graphics.Canvas;
import Android.graphics.Color;
import Android.graphics.Paint;
import Android.graphics.Path;
import Android.util.AttributeSet;
import Android.view.View;
public class MyView extends View {
Paint paint;
Path path;
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init(){
Paint = new Paint();
Paint.setColor(Color.BLUE);
Paint.setStrokeWidth(10);
Paint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawRect(30, 50, 200, 350, Paint);
canvas.drawRect(100, 100, 300, 400, Paint);
//drawRect(left, top, right, bottom, Paint)
}
}
Déplacez ensuite votre activité Java vers setContentView()
en utilisant notre affichage personnalisé, MyView.Call.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
Pour plus de détails, vous pouvez visiter ici
http://developer.Android.com/reference/Android/graphics/Canvas.html
Paint.setStrokeWidth(3);
Paint.setColor(BLACK);
et l’un de vos drawRect
devrait fonctionner.
Le code est correct, il suffit de définir Style of Paint comme STROKE
Paint.setStyle(Paint.Style.STROKE);
Je ne sais pas si c'est trop tard, mais j'ai résolu le problème en traçant quatre rectangles minces qui, ensemble, forment une grande bordure. Dessiner la bordure avec un rectangle semble être impossible, car ils sont tous opaques. Vous devez donc dessiner chaque bord de la bordure séparément.