Canvas 的drawRect 几个参数理解

昨天写了一个View视图,在上面画了一个矩形,这个视图的最后效果如图:

Canvas 的drawRect 几个参数理解_第1张图片

主要代码如下:

package com.view;

import com.example.testsql.R;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.view.View;

public class MyView extends View {

	MyView(Context context) {
		super(context);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);

		// 首先定义一个paint
		Paint paint = new Paint();

		paint.setColor(Color.RED);
		// 设置样式-空心矩形
		paint.setStyle(Style.STROKE);
		// 绘制一个矩形
		canvas.drawRect(150, 75, 250, 120, paint);

		paint.setColor(Color.YELLOW);
		canvas.drawRect(250, 75, 350, 120, paint);

		paint.setColor(Color.GREEN);

		canvas.drawRect(150, 120, 250, 170, paint);

		paint.setColor(Color.CYAN);
		canvas.drawRect(250, 120, 350, 170, paint);

		// 绘文字
		// 设置颜色
		paint.setColor(Color.BLACK);
		// 绘文字
		canvas.drawText("Hello1", 200, 90, paint);
		canvas.drawText("Hello2", 300, 100, paint);
		canvas.drawText("Hello3", 200, 150, paint);
		canvas.drawText("Hello4", 300, 170, paint);

		// 绘图
		// 从资源文件中生成位图
		Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
				R.drawable.back);

		// 绘图
		canvas.drawBitmap(bitmap, 270, 140, paint);
	}

}


其中关于canvas.drawRect(150, 75, 250, 120, paint); 的这个方法,我想说一下关于Canvas 的 drawRect 几个参数理解,

其实网上大部分的解释是

left:矩形的左边位置。

top:矩形的上边位置。

right:矩形的右边位置。

bottom:矩形的下边位置。

但是我个人怎么看都不是很懂,于是我就开始问自己一个问题,如果要两个点来确定一个矩形,那这两个点应该怎样放呢?不用多想,一定是对角!那确定了对角关系后,我就开始尝试画四方格,实际上也就是四个矩形拼凑而成。 于是我自己在纸上画了一下,如下图:

Canvas 的drawRect 几个参数理解_第2张图片

canvas.drawRect(150, 75, 250, 120, paint);  A1     A2
canvas.drawRect(250, 75, 350, 120, paint);        B1    B2
canvas.drawRect(150, 120, 250, 170, paint);     C1    C2
canvas.drawRect(250, 120, 350, 170, paint);     D1    D2

只要先确认第一个矩形,那么B1的坐标就是于A1同Y轴与A2同x轴。以此类推。

canvas.drawText("Hello1", 200, 90, paint);

canvas.drawText("Hello2", 300, 100, paint);

canvas.drawText("Hello3", 200, 150, paint);

canvas.drawText("Hello4", 300, 170, paint);

而文字hello1,只要x轴只要在A1和B1的x轴之间,Y轴在B1和A2的Y轴之间,文字就不会出边框,其它以此类推。

 

而这个类的调用方法也很简单:

package com.view;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;

@SuppressLint("WrongCall")
public class DisplayView extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		super.onCreate(savedInstanceState);
	
		 setContentView(new MyView(this));
	
	}	
	
}


 

 

你可能感兴趣的:(android,java)