您的位置:首页 > 其它

自定义VIEW(学习笔记三)-基本图形的绘制

2016-12-02 16:25 579 查看

一.Canvas简介

Canvas我们可以称之为画布,能够在上面绘制各种东西,是安卓平台2D图形绘制的基础,非常强大。

一般来说,比较基础的东西有两大特点:

可操作性强:由于这些是构成上层的基础,所以可操作性必然十分强大。

比较难用:各种方法太过基础,想要完美的将这些操作组合起来有一定难度。

不过不必担心,本系列文章不仅会介绍到Canvas的操作方法,还会简单介绍一些设计思路和技巧。

二.Canvas的常用操作速查表



三.Canvas

3.1 绘制颜色

绘制颜色是填充整个画布,常用于绘制底色。

canvas.drawColor(Color.BLUE); //绘制蓝色


3.2 创建画笔

要想绘制内容,首先需要先创建一个画笔:

// 1.创建一个画笔
private Paint mPaint = new Paint();


// 2.初始化画笔
private void initPaint() {
mPaint.setColor(Color.BLACK);       //设置画笔颜色
mPaint.setStyle(Paint.Style.FILL);  //设置画笔模式为填充
mPaint.setStrokeWidth(10f);         //设置画笔宽度为10px
}


// 3.在构造函数中初始化
public SloopView(Context context, AttributeSet attrs) {
super(context, attrs);
initPaint();
}


3.3绘制点:

可以绘制一个点,也可以绘制一组点,如下:

canvas.drawPoint(200, 200, mPaint);     //在坐标(200,200)位置绘制一个点
canvas.drawPoints(new float[]{          //绘制一组点,坐标位置由float数组指定
500,500,
500,600,
500,700
},mPaint);


关于坐标原点默认在左上角,水平向右为x轴增大方向,竖直向下为y轴增大方向。

3.4 绘制直线:

canvas.drawLine(300,300,500,600,mPaint);    // 在坐标(300,300)(500,600)之间绘制一条直线
canvas.drawLines(new float[]{// 绘制一组线 每四数字(两个点的坐标)确定一条线
100,200,200,200,
100,300,200,300
},mPaint);


3.5 绘制矩形:

确定确定一个矩形最少需要四个数据,就是对角线的两个点的坐标值,这里一般采用左上角和右下角的两个点的坐标。

关于绘制矩形,Canvas提供了三种重载方法,第一种就是提供四个数值(矩形左上角和右下角两个点的坐标)来确定一个矩形进行绘制。 其余两种是先将矩形封装为Rect或RectF(实际上仍然是用两个坐标点来确定的矩形),然后传递给Canvas绘制,如下:

// 第一种
canvas.drawRect(100,100,800,400,mPaint);

// 第二种
Rect rect = new Rect(100,100,800,400);
canvas.drawRect(rect,mPaint);

// 第三种
RectF rectF = new RectF(100,100,800,400);
canvas.drawRect(rectF,mPaint);


两者最大的区别就是精度不同,Rect是int(整形)的,而RectF是float(单精度浮点型)的。

3.6 绘制圆角矩形:

绘制圆角矩形也提供了两种重载方式,如下:

// 第一种
RectF rectF = new RectF(100,100,800,400);
canvas.drawRoundRect(rectF,30,30,mPaint);

// 第二种
canvas.drawRoundRect(100,100,800,400,30,30,mPaint);


上面两种方法绘制效果也是一样的,但鉴于第二种方法在API21的时候才添加上,所以我们一般使用的都是第一种。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: