简介
在自定义 View的时候,Canvas和paint是我们经常会用到的东西.
Canvas可以理解为画布的意思.
Paint可以理解为画笔的意思.
下面将Canvas和paint对象常用方法做个笔记,方便记忆。
Canvas 方法
一.改变Canvas的坐标系位置
1.平移坐标系
canvas.translate(myWidth / 2, myHeight / 2);
2.缩放坐标系
canvas.scale(0.5f,0.5f);
3.旋转坐标系
canvas.rotate(30);
二.Canvas保存和还原
Canvas提供了几个方法,让我们可以方便的对Canvas的状态进行更改和还原。
这些方法是:save()、restore()、restoreToCount(int saveCount)。
我们在对Canvas进行平移、旋转、放大等操作时候,可以调用save()方法,将当前修改过的Canvas状态进行保存,调用restore() 方法后,会将Canvas还原成最近的一个save() 的状态。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//一.canvas先保存画布状态
canvas.save();
//二.改变canvas的坐标原点位置
canvas.translate(myWidth / 2, myHeight / 2); //平移坐标系
// canvas.scale(0.5f,0.5f); //缩放坐标系
// canvas.rotate(30);//旋转坐标系
//三.具体的绘制方法
drawPie(canvas);
//四.canvas取出之前保存的画布状态,为了不影响其他人使用画布的属性
canvas.restore();
}
三.绘制图形
canvas.drawRect(rect,paint);//绘制矩形
canvas.drawRoundRect(rect,100,100,paint);//绘制圆角矩形
canvas.drawText("O(∩_∩)O~", 0, 0, paint);//绘制文字
canvas.drawArc(rect,0,30,true,paint);//绘制扇形
canvas.drawCircle(0, 0, radius, paint);//绘制圆形
canvas.drawLine(50, 0, 500, 0, paint);//绘制直线
canvas.drawOval(rect,paint);//绘制圆形
canvas.drawPoint(0,0,paint);//绘制单个点
canvas.drawBitmap(rawBitmap, 0, 0, paint);//画布上绘制图片
canvas.drawColor(Color.RED);//画布上绘制颜色
canvas.drawPath(path2, paint);//画出贝塞尔曲线
Paint方法
paint2.set(paint);//将paint copy给paint2
// 设置画笔样式,如果不设置,默认是全部填充(FILL)。可选项为:FILL(填充),FILL_OR_STROKE(描边并填充),或STROKE(描边)
paint2.setStyle(Paint.Style.FILL);
paint2.setColor(Color.RED);//设置颜色
paint2.setARGB(12,22,22,22);//设置颜色
paint2.setAlpha(11);//设置透明度
paint2.setAntiAlias(true);//抗锯齿
paint2.setTextSize(Utils.dip2px(mContent, 17));//设置文字大小
paint2.setStrokeWidth(Utils.dip2px(mContent, 5));//设置线宽
paint2.setFakeBoldText(true);//设置粗体
paint2.setTypeface(Typeface.DEFAULT_BOLD); //设置字体,Typeface包含了字体的类型,粗细,还有倾斜、颜色等。
paint2.setUnderlineText(true);//设置下划线
paint2.setTextAlign(Paint.Align.CENTER);//对齐方式
paint2.setLetterSpacing(2.0f);//行间距
paint2.setTextScaleX(0.5f);//缩放倍速
paint2.setTextSkewX(0.3f);//设置文本在水平方向上的倾斜
paint2.setShadowLayer(10, 10, 10, Color.BLUE);//设置阴影效果
paint2.setShader();//设置着色器,用来给图像着色的,绘制出各种渐变效果
具体参见这篇文章http://www.cnblogs.com/tianzhijiexian/p/4298660.html
paint2.measureText("aaaa");//测量字体的长度了