安卓自定义view之Canvas和Paint方法
来源:互联网 发布:火影忍者手办淘宝 编辑:程序博客网 时间:2024/05/18 02:04
简介
在自定义 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");//测量字体的长度了
阅读全文
1 0
- 安卓自定义view之Canvas和Paint方法
- 自定义View-Paint和Canvas
- 自定义View(二)之Paint和Canvas详解
- 自定义View--Canvas和Paint详解
- android自定义view--Paint和Canvas
- 安卓自定义view系列之paint画笔类详解
- Android自定义View基础之Canvas、Paint介绍
- 安卓自定义View进阶-Canvas之绘制基本形状
- 安卓自定义View进阶-Canvas之画布操作
- 安卓自定义View进阶-Canvas之图片文字
- 安卓自定义View进阶-Canvas之绘制图形
- 安卓自定义View进阶-Canvas之画布操作
- 安卓自定义View进阶-Canvas之图片文字
- 安卓自定义View进阶-Canvas之绘制图形
- 安卓自定义View-Canvas之绘制图形
- 安卓自定义View-Canvas之画布操作
- 安卓自定义View-Canvas之图片文字
- 安卓自定义View进阶-Canvas之绘制图形
- HTML 小结
- [位运算]HDU4810 Wall Painting
- JZOJ3427. 【NOIP2013模拟】归途与征程 (2017.8B组)
- SourceInsight的快捷键
- [HDU 6141] I am your Father
- 安卓自定义view之Canvas和Paint方法
- oracle笔记
- Win10 安装虚拟机&ROS
- ASP.NET Web API设计pdf
- 使用ajax动态加载html元素时,onclick事件失效
- Spark 报错 ImportError: No module named py4j.java_gateway
- 抓取静态页面的信息
- 本地项目上传github,拉取git项目到本地文件夹
- 2017.8.17