Androidcanvas绘制矩形

如何绘制空的矩形等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); 

它绘制矩形,并用黑色填充它,但我只想像这个图像“框架”周围:

在这里输入图像描述

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

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

…会变成这样:

在这里输入图像描述

 //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); 
 paint.setStrokeWidth(3); paint.setColor(BLACK); 

并且你的一个drawRect应该可以工作。

创build一个新的类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) } } 

然后使用我们的自定义View,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

不知道这是否太晚了,但我解决这个问题的方法是绘制四个薄的矩形,它们组成了一个大的边界。 用一个矩形绘制边框似乎是可撤销的,因为它们都是不透明的,所以你应该分别绘制边框的每一条边。