Подтвердить что ты не робот

Прямоугольник рисования холста Android

как рисовать пустой прямоугольник с и т.д. borderWidth = 3 и borderColor = черный, а часть внутри прямоугольника не имеет содержимого или цвета. Какую функцию в 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

4b9b3361

Ответ 1

Попробуйте paint.setStyle(Paint.Style.STROKE)?

Ответ 2

Предполагая, что "часть внутри прямоугольника не имеет цвета содержимого" означает, что вы хотите различать заливки внутри прямоугольника; вам нужно нарисовать прямоугольник внутри вашего прямоугольника, затем с шириной хода 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

Ответ 3

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

Ответ 4

paint.setStrokeWidth(3);

paint.setColor(BLACK);

и любой из ваших drawRect должен работать.

Ответ 5

Создайте новый класс MyView, Which extends View. Переопределите метод onDraw(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)

 }

}

Затем переместите свою активность Java на setContentView(), используя наш пользовательский вид MyView.Call таким образом.

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

Более подробную информацию вы можете найти здесь

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

Ответ 6

Не знаю, слишком ли поздно, но так, как я решил это, было нарисовать четыре тонких прямоугольника, которые вместе составляли одну большую границу. Рисование границы с помощью одного прямоугольника кажется недействительным, поскольку все они непрозрачны, поэтому вы должны рисовать каждый край границы отдельно.