it-swarm.com.de

Android-Leinwand zeichnen Rechteck

so zeichnen Sie ein leeres Rechteck mit usw. borderWidth = 3 und borderColor = black und ein Teil innerhalb des Rechtecks ​​haben weder Inhalt noch Farbe. Welche Funktion in Canvas verwendet werden

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

void drawRect(RectF rect, Paint paint)

void drawRect(Rect r, Paint paint)

Vielen Dank.

Ich versuche dieses Beispiel

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

Es zeichnet ein Rechteck und füllt es mit schwarzer Farbe, aber ich möchte nur "Rahmen" machen. 

enter image description here

95
Kec

Paint.setStyle(Paint.Style.STROKE) versuchen?

145
pandur

Angenommen, "Teil innerhalb des Rechtecks ​​hat keine Inhaltsfarbe" bedeutet, dass unterschiedliche Füllungen innerhalb des Rechtecks ​​gewünscht werden; Sie müssen ein Rechteck in Ihr Rechteck zeichnen, dann mit der Strichbreite 0 und der gewünschten Füllfarbe. 

Zum Beispiel:

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 );

    }

}

Die Aktivität zum Starten:

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);

    }
}

... wird sich so entwickeln:

enter image description here

119
DonGru
//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);
11
Cristopher Loli

Erstellen Sie eine neue Klasse MyView, Which extends View. Überschreiben Sie die onDraw(Canvas canvas)-Methode, um ein Rechteck für Canvas zu zeichnen.

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)

 }

}

Verschieben Sie dann Ihre Java-Aktivität mithilfe unserer benutzerdefinierten Ansicht, MyView, nach setContentView().

    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(new MyView(this));
  }

Für weitere Details besuchen Sie bitte hier 

http://developer.Android.com/reference/Android/graphics/Canvas.html

7
IntelliJ Amiya
Paint.setStrokeWidth(3);

Paint.setColor(BLACK);

und eine Ihrer drawRect sollte funktionieren.

6
Kenny Lim

Der Code ist gut, setStyle von Paint als STROKE

Paint.setStyle(Paint.Style.STROKE);
0
user3013823

Ich weiß nicht, ob dies zu spät ist, aber ich habe das gelöst, indem ich vier dünne Rechtecke gezeichnet habe, die zusammen eine große Grenze bilden. Das Zeichnen des Rahmens mit einem Rechteck scheint nicht rückgängig zu machen, da sie alle undurchsichtig sind. Daher sollten Sie jeden Rand des Rahmens separat zeichnen.

0
Steven