欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android原生绘图工具Paint详细

时间:2022-11-16 09:14:43|栏目:Android代码|点击:

前言:

生活中绘制图案需要纸和笔,android中提供了类似的工具CanvasPaint,分别对应画布和画笔。

The Paint class holds the style and color information about how to draw geometries, text and bitmaps.

Paint拥有绘制几何图形、文本、图片的样式和颜色信息。

The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect, Path, text, Bitmap), and a paint (to describe the colors and styles for the drawing).

Canvas拥有绘图的请求权,想要完成绘制,需要4个基本元素:保存像素的Bitmap、一个可以调用draw方法的canvas、要绘制的内容描述、一个画笔。凭借这4个元素就可以绘制到一个bitmap上,然后渲染到屏幕上。

1.简介

今天先将一下Paint的相关内容。Paint提供了三种初始化方法:

Paint() 
Paint(int flag)
Paint(Paint paint)

2.基本属性使用

2.1 setAlpha透明度

setAlpha(int a) 设置范围0~255

2.2 setStyle填充样式

填充样式表示绘线和填充的选择:

Paint.Style.FILL
Paint.Style.FILL_AND_STROKE
Paint.Style.STROKE

2.3 颜色,字体,对齐,抗锯齿

setColorsetARGB设置颜色,设置画笔的颜色,
setARGB()参数范围0-255。
setAntiAlias(boolean) 抗锯齿,使边界更顺滑(有些屏幕分辨率不高,导致像素点比较大,绘制边界可能会有颗粒感,打开抗锯齿边界颗粒感会减少)。
setTextSize(float textSize) 字体大小,单位是px,如果是dp要注意转换。
setTextAlign(Paint.Align.RIGHT)设置字体对齐方式,根据下面的实例可以,对齐方式基于开始绘制的点。

mTextPaint.setTextAlign(Paint.Align.LEFT);
canvas.drawText("MatumbaMan的博客",200, 200, mTextPaint);

mTextPaint.setTextAlign(Paint.Align.RIGHT);
canvas.drawText("MatumbaMan的博客",200, 300, mTextPaint);

mTextPaint.setTextAlign(Paint.Align.CENTER);
canvas.drawText("MatumbaMan的博客",200, 400, mTextPaint);

2.4 setShadowLayer 阴影

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

Radius设置角度,dx,dy控制字体的上下左右出现,有正负之分,dx的正负代表右左,dy的正负代表下上。

mTextPaint.setTextAlign(Paint.Align.LEFT);
mTextPaint.setShadowLayer(10, -20, 40, Color.GRAY);
canvas.drawText("MatumbaMan的博客",200, 200, mTextPaint);


mTextPaint.setTextAlign(Paint.Align.RIGHT);
canvas.drawText("MatumbaMan的博客",200, 300, mTextPaint);

mTextPaint.setTextAlign(Paint.Align.CENTER);
canvas.drawText("MatumbaMan的博客",200, 400, mTextPaint);

2.5 setStrokeCap

setStrokeCap(Paint.Cap.ROUND)设置绘制起始点和结尾点的样式,

三种样式ROUND,BUTT,SQUARE

Cap.ROUND(圆形)
Cap.SQUARE(方形)
Paint.Cap.BUTT(无)

Path path = new Path();
path.moveTo(100, 100);
path.lineTo(100, 200);
path.lineTo(200, 300);
canvas.drawPath(path, mPaint2);//无

path.reset();
path.moveTo(300, 100);
path.lineTo(300, 200);
path.lineTo(400, 300);
mPaint2.setStrokeCap(Paint.Cap.ROUND);//圆
canvas.drawPath(path, mPaint2);

path.reset();
path.moveTo(500, 100);
path.lineTo(500, 200);
path.lineTo(600, 300);
mPaint2.setStrokeCap(Paint.Cap.SQUARE);//方
canvas.drawPath(path, mPaint2);

2.6 setStrokeJoin

setStrokeJoin(Paint.Join join),设置绘制path连接点的样式

Join.MITER(结合处为锐角)
Join.Round(结合处为圆弧)
Join.BEVEL(结合处为直线)

Path path = new Path();
path.moveTo(100, 100);
path.lineTo(100, 200);
path.lineTo(200, 300);
mPaint2.setStrokeJoin(Paint.Join.MITER);
canvas.drawPath(path, mPaint2);

path.reset();
path.moveTo(300, 100);
path.lineTo(300, 200);
path.lineTo(400, 300);
mPaint2.setStrokeJoin(Paint.Join.ROUND);
canvas.drawPath(path, mPaint2);

path.reset();
path.moveTo(500, 100);
path.lineTo(500, 200);
path.lineTo(600, 300);
mPaint2.setStrokeJoin(Paint.Join.BEVEL);
canvas.drawPath(path, mPaint2);

上一篇:Android用SharedPreferences实现登录注册注销功能

栏    目:Android代码

下一篇:Android App跳转微信小程序踩坑实战

本文标题:Android原生绘图工具Paint详细

本文地址:http://www.codeinn.net/misctech/219126.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有