1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android学习之——Canvas画图

Android学习之——Canvas画图

时间:2019-10-29 13:14:34

相关推荐

Android学习之——Canvas画图

记一次重新温故Android画图,学过的知识很容易忘记,特在此记录!

前期准备

首先,需要新建一个类,继承View或其他控件(依需求而定),然后实现两个构造方法(一定要两个),然后重写onDraw()方法

public class Canvas extends View {private Paint mPaint = new Paint();public Canvas(Context context) {super(context);}public Canvas(Context context, AttributeSet attrs) {super(context, attrs);}@SuppressLint("NewApi")@Overrideprotected void onDraw(android.graphics.Canvas canvas) {super.onDraw(canvas);}}

然后直接在需要的布局中使用这个控件就行了!

Paint相当于画布 , canvas相当于画笔,接下来就可以画东西了,先上一点基本属性

Paint常用的设置函数:

setAlpha()透明度

setAntiAlias()抗锯齿

setColor(),setARGB()设置颜色

setStyle(Paint.Style style) 设置填充样式

setStrokeCap(Paint.Cap cap) 画笔的样式(落笔,收笔时)

setStrokeJoin(Paint.Join join)连接点的样式

setStrokeWidth(float width)设置画笔宽度

setShadowLayer(float radius, float dx, float dy, int shadowColor) 设置阴影

setTextSize(float textSize) 字体大小

setTextAlign(Paint.Align.RIGHT)设置字体对齐方式

setColorFilter(ColorFilter filter) 设置颜色过滤

setUnderlineText(true) 下划线

setPathEffect() 设置路径效果

setTypeface() 设置字体风格

setFilterBitmap() 设置图片过滤

setXfermode(Xfermode xfermode) xfermode设置图像混合模式

setShader(Shader shader) 设置shader包括渐变shader,图片shader

1.设置字体

canvas.drawText("android Paint 学习 CENTER", 300, 400, mPaint);

canvas.drawText(显示的文字 , 左边距 , 上边距 , 画布);

2.设置阴影

mPaint.setShadowLayer(10 ,-50 , 50 , Color.BLUE);

mPaint.setShadowLayer(阴影模糊度(数值越大越清晰) , 右边距 , 上边距 , 文本颜色)

3.画正方形

(1)写法1:Rect rect = new Rect(100 ,100 ,300 ,500);

canvas.drawRect(rect , mPaint);

(2)写法2:canvas.drawRect(100,700,300,900,mPaint);

canvas.drawRect(左边距 ,上边距, 长 , 宽 , 画布)

4.画圆角矩形

canvas.drawRoundRect(100, 400, 300, 600 ,50 ,50 ,mPaint);

canvas.drawRoundRect(100, 400, 300, 600 ,50 ,50 ,mPaint);

canvas.drawRoundRect(左边距 , 上边距 , 右边距 , 下边距 , 长 , 宽 ,画布)

5.画圆形

canvas.drawCircle(400,400,200,mPaint);

canvas.drawCircle(圆心左边距 , 圆形上边距 , 半径 ,画布);

6.画路径

Path path = new Path();path.moveTo(200 ,200); //起点path.lineTo(300 ,300); //途点path.lineTo(200 ,600); //终点canvas.drawPath(path , mPaint);

7.画连续直线

mPaint.setStrokeWidth(15);float[] positions2 = {20,20,20,35,320,320,320,335,340,340,350,387,360,370,390,420,410,200,90,170};// float[] positions2 = {第一个点起点x轴,第一个点起点y轴,第一个点终点x轴,第二个点终点y轴... }canvas.drawLines(positions2,4,12,mPaint);

绘制线的集合,参数中pts是点的集合,两个值代表一个点,四个值代表一条线,互相之间不连接。

offset跳过的点,count跳过之后要绘制的点的总数,可以用于集合中部分点的绘制

7.画圆弧

RectF rectF1 = new RectF(100 ,100 ,400 ,400);canvas.drawArc(rectF1 , 0 , 270 ,false , mPaint);// RectF rectF1 = new RectF(左边距 ,上边距 ,圆心x轴 ,圆心y轴);// canvas.drawArc(圆 , 起始圆弧度 , 终点圆弧度 , 是否直线连接 , 画布);

以下是第四个参数true和false的区别

8.画椭圆

// RectF rectF2 = new RectF(起始点x轴, 起始点y轴, 终点x轴, 终点y轴);// 起始点相当于矩形的左上角,终点相当于矩形右下角,在矩形中画圆RectF rectF1 = new RectF(200, 200, 400, 400);RectF rectF2 = new RectF(200, 500, 700, 600);canvas.drawOval(rectF1,mPaint);canvas.drawOval(rectF2,mPaint);

9.绘制点

float[] points = {30,40,40,50,60,60};canvas.drawPoints(points,mPaint);

10.画环形文字

// path.addArc(new RectF(起始点X轴,起始点y轴,终点X轴,终点Y轴),起始度,终止度);// canvas.drawTextOnPath(文字,路径,水平偏移量,垂直偏移量,画布);Path path = new Path();path.addArc(new RectF(100,100,800,800),0,360);canvas.drawTextOnPath("好好学习,天天向上,好好学习,天天向上,好好学习,天天向上",path,100,100,mPaint);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。