Android画布绘制矩形

Kec*_*Kec 99 android android-canvas

如何使用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)
Run Code Online (Sandbox Code Playgroud)

谢谢.

我试试这个例子

Paint myPaint = new Paint();
myPaint.setColor(Color.rgb(0, 0, 0));
myPaint.setStrokeWidth(10);
c.drawRect(100, 100, 200, 200, myPaint);
Run Code Online (Sandbox Code Playgroud)

它绘制矩形并用黑色填充它但我只想像这个图像一样"框架":

在此输入图像描述

小智 150

试试paint.setStyle(Paint.Style.STROKE)


Don*_*Gru 122

假设" 矩形内的部分没有内容颜色 "意味着您希望矩形内有不同的填充; 您需要在矩形内绘制一个矩形,然后使用笔触宽度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 );

    }

}
Run Code Online (Sandbox Code Playgroud)

启动它的活动:

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

    }
}
Run Code Online (Sandbox Code Playgroud)

......会这样:

在此输入图像描述

  • 这是解决方法paint.setStyle(Style.STROKE); 感谢帮助. (21认同)

小智 11

//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);
Run Code Online (Sandbox Code Playgroud)


Int*_*iya 7

创建一个新类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)

 }

}
Run Code Online (Sandbox Code Playgroud)

然后将您的Java活动移动到setContentView()使用我们的自定义View,MyView.Call这样.

    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(new MyView(this));
  }
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请访问此处

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


Ken*_*Lim 6

paint.setStrokeWidth(3);

paint.setColor(BLACK);
Run Code Online (Sandbox Code Playgroud)

并且你们中的任何一个都drawRect应该工作.