web-dev-qa-db-ja.com

Androidキャンバス描画長方形

空の長方形をどのように描画するかなど。borderWidth = 3とborderColor = blackで、長方形内の部分にはコンテンツも色もありません。 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)

ありがとう。

私はこの例を試します

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

それは長方形を描き、黒い色で塗りつぶしますが、私はこの画像のようにちょうど「フレーム」が欲しいです:

enter image description here

98
Kec

Paint.setStyle(Paint.Style.STROKE)をお試しください?

147
pandur

長方形内の部分にコンテンツの色がない」と仮定すると、長方形内に別の塗りつぶしが必要になります。四角形内に四角形を描画し、ストローク幅0と目的の塗りつぶし色で描画する必要があります。

例えば:

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

    }

}

開始するアクティビティ:

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

    }
}

...次のようになります:

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

新しいクラスを作成しますMyView, Which extends ViewonDraw(Canvas canvas)メソッドをオーバーライドして、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)

 }

}

次に、カスタムビューMyView.Callを使用して、JavaアクティビティをsetContentView()に移動します。

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

詳細については、こちらをご覧ください

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

7
IntelliJ Amiya
Paint.setStrokeWidth(3);

Paint.setColor(BLACK);

そして、drawRectのいずれかが機能するはずです。

6
Kenny Lim

ペイントのsetStyleをSTROKEとして設定するだけで問題ありません

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

これで手遅れかどうかはわかりませんが、これを解決する方法は、1つの大きな境界線を構成する4つの薄い長方形を描画することでした。 1つの長方形で境界線を描画すると、それらはすべて不透明であるため、元に戻すことができないようです。したがって、境界線の各エッジを個別に描画する必要があります。

0
Steven