Android tuval çizme dikdörtgen


105

vb. ile boş dikdörtgen nasıl çizilir borderWidth = 3 ve borderColor = black ve dikdörtgen içindeki bölümün içeriği veya rengi yok. Canvas'ta hangi işlevin kullanılacağı

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

void drawRect(RectF rect, Paint paint)

void drawRect(Rect r, Paint paint)

Teşekkürler.

Bu örneği deniyorum

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

Dikdörtgen çiziyor ve onu siyah renkle dolduruyor ama ben sadece etrafını bu resim gibi "çerçevelemek" istiyorum:

görüntü açıklamasını buraya girin


Yanıtlar:



125

" Dikdörtgenin içindeki parçanın içerik rengine sahip olmadığını " varsaymak, dikdörtgen içinde farklı dolgular istediğiniz anlamına gelir; Dikdörtgenin içine bir dikdörtgen çizmeniz ve ardından 0 kontur genişliği ve istenen dolgu rengiyle (renkleri) kullanmanız gerekir.

Örneğin:

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

    }

}

Başlatma etkinliği:

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

    }
}

... şu şekilde ortaya çıkacak:

görüntü açıklamasını buraya girin


Aslında ihtiyacım olan bu screencast.com/t/oFYF5kGtw5B bu kırmızı dikdörtgeni çizdikten sonra sadece o dikdörtgeni eklemek mümkün mü?
Kec

21
Paint.setStyle (Style.STROKE) çözümü budur; Yardım için teşekkürler.
Kec

Sanırım DonGru ve Juan burada harika bir açıklama yaptılar .. ama yazarın istediği şeyin tam tek satırlık cevabı aşağıda @Yuck - paint.setStyle (Paint.Style.STROKE)
simyacı

Bu cevap cevaba uymuyor. Doğru cevabı göstermiyor. Pandur'un cevabı doğrudur.
Sonhja

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

7

Yeni bir sınıf oluşturun MyView, Which extends View. onDraw(Canvas canvas)Dikdörtgen çizme yöntemini geçersiz kılın 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)

 }

}

Ardından Java etkinliğinizi setContentView()özel Görünümümüz olan MyView'ı kullanarak taşıyın. Bu şekilde arayın.

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

Daha fazla ayrıntı için burayı ziyaret edebilirsiniz

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


6
paint.setStrokeWidth(3);

paint.setColor(BLACK);

ve ikinizden biri drawRectçalışmalı.


0

Bunun çok geç olup olmadığını bilmiyorum, ama bunu çözme şeklim, birlikte tek bir büyük sınır oluşturan dört ince dikdörtgen çizmekti. Kenarlığı tek bir dikdörtgenle çizmek, hepsi opak olduklarından geri alınamaz gibi görünüyor, bu nedenle kenarlığın her bir kenarını ayrı ayrı çizmelisiniz.


Ya da iki dikdörtgen iç içe :)
P-RAD

Veya dördüncü çizgi için bir daire, arka plan renginde bir daire, üç parçalı bir çizim çizgisi () ve bir dikdörtgen.
Tatarize

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.