没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
前言 大家都知道在Android中,自定义控件是一个非常重要的知识点,而自定义控件对Android开发者是一个难点,考验开发人员对View原理的理解,对于继承View的自定义控件,一般都需要重写onDraw方法,而且往往需要开发人员能够掌握Paint这个类。 简介 The Paint class holds the style and color information about how to draw geometries, text and bitmaps. Paint:该类保存了绘制几何图形、文本和位图的样式和颜色信息。也就是说我们可以使用Paint保存的样式和颜色,来绘制图形、文本
资源推荐
资源详情
资源评论
Android绘图之绘图之Paint的使用方法详解的使用方法详解
前言前言
大家都知道在Android中,自定义控件是一个非常重要的知识点,而自定义控件对Android开发者是一个难点,考验开发人员对View原理的理解,
对于继承View的自定义控件,一般都需要重写onDraw方法,而且往往需要开发人员能够掌握Paint这个类。
简介简介
The Paint class holds the style and color information about how to draw geometries, text and bitmaps.
Paint:该类保存了绘制几何图形、文本和位图的样式和颜色信息。也就是说我们可以使用Paint保存的样式和颜色,来绘制图形、文本和bitmap,
这就是Paint的强大之处。接下来我们使用Paint来绘图,并且看看该类有哪些样式和颜色。
Paint的使用的使用
使用Paint之前需要初始化
mPaint = new Paint();
设置笔(Paint)的颜色和alpha值:
mPaint.setColor(Color.BLUE);
mPaint.setAlpha(255);
注意:注意:alpha的范围是[0..255],而不是[0..1],是一个int值。
设置画笔的样式:通过mPaint.setStyle()来设置样式。
public enum Style {
/**
* Geometry and text drawn with this style will be filled, ignoring all
* stroke-related settings in the paint.
*/
FILL (0),
/**
* Geometry and text drawn with this style will be stroked, respecting
* the stroke-related fields on the paint.
*/
STROKE (1),
/**
* Geometry and text drawn with this style will be both filled and
* stroked at the same time, respecting the stroke-related fields on
* the paint. This mode can give unexpected results if the geometry
* is oriented counter-clockwise. This restriction does not apply to
* either FILL or STROKE.
*/
FILL_AND_STROKE (2);
Style(int nativeInt) {
this.nativeInt = nativeInt;
}
final int nativeInt;
}
总共有三种画笔的样式
FILL:填充内容;
STROKE:描边;
FILL_AND_STROKE:填充内容并描边。
设置画笔的宽度设置画笔的宽度
mPaint.setStrokeWidth(50);
设置画笔的线帽设置画笔的线帽
通过mPaint.setStrokeCap来设置线帽,总共有三种线帽
/**
* The Cap specifies the treatment for the beginning and ending of
* stroked lines and paths. The default is BUTT.
*/
public enum Cap {
/**
* The stroke ends with the path, and does not project beyond it.
*/
BUTT (0),
/**
* The stroke projects out as a semicircle, with the center at the
* end of the path.
*/
ROUND (1),
/**
* The stroke projects out as a square, with the center at the end
* of the path.
*/
SQUARE (2);
private Cap(int nativeInt) {
this.nativeInt = nativeInt;
}
final int nativeInt;
}
BUTT:没有线帽,默认模式
ROUND:圆形
SQUARE:方形
三种线帽对比:三种线帽对比:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setColor(Color.BLUE);
mPaint.setAlpha(255);
//设置画笔的样式
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
//画笔的宽度
mPaint.setStrokeWidth(50);
mPaint.setStrokeCap(Paint.Cap.SQUARE);//方形
mPaint.setStrokeJoin(Paint.Join.BEVEL);//直线
Path path = new Path();
path.moveTo(100, 100);
path.lineTo(300, 100);
canvas.drawPath(path, mPaint);
mPaint.reset();//重置
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setStrokeWidth(50);
mPaint.setStrokeCap(Paint.Cap.ROUND);//圆形
mPaint.setStrokeJoin(Paint.Join.BEVEL);//直线
Path path1 = new Path();
path1.moveTo(100, 200);
path1.lineTo(300, 200);
canvas.drawPath(path1, mPaint);
mPaint.reset();//重置
mPaint.setColor(Color.GREEN);
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setStrokeWidth(50);
mPaint.setStrokeCap(Paint.Cap.BUTT);//没有
mPaint.setStrokeJoin(Paint.Join.BEVEL);//直线
Path path2 = new Path();
path2.moveTo(100, 300);
path2.lineTo(300, 300);
canvas.drawPath(path2, mPaint);
}
上面代码中有个重置画笔,这时候需要重新设置画笔。
剩余6页未读,继续阅读
资源评论
weixin_38742124
- 粉丝: 3
- 资源: 897
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机械自动化与机器人控制中的速度与雅克比矩阵计算
- springboot社区医院信息平台(代码+数据库+LW)
- STM32+ESP8266(ESP32)+MQTT+阿里云物联网平台
- 宠物管理-JAVA-基于springBoot宠物管理系统设计与实现
- X230安装Sonoma成功 博通BCM94352HMB网卡 扩展坞引线改屏1080P
- 物业智慧-JAVA-基于springBoot物业智慧系统设计与实现
- 计算机专业设计思路,个人学习整理教程,分析给需要的同学
- 大学生就业-JAVA-基于springBoot大学生就业信息管理系统设计与实现
- 计算机软件课程设计思路,个人学习整理教程,分析给需要的同学
- VMware安装教程,个人学习整理教程,分析给需要的同学
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功