Android Canvas API总结和使用方法
Android Canvas API总结和使用方法
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
//Canvas 操作函数 2015年5月15日 Android 4.4
int MATRIX_SAVE_FLAG = 0x01; Canvas(); boolean isHardwareAccelerated(); //图层保存与恢复操作 void setMatrix(Matrix matrix); DrawFilter getDrawFilter(); //填充RGB |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
public class MyCanvasDrawView extends View { private static final String TAG = null; public MyCanvasDrawView(Context context) { } @Override public void drawLine(Canvas canvas) { public void drawMultArc(Canvas canvas) { //边框的画笔 mUseCenters = new boolean[4]; initDrawMultArc(mPaints, mUseCenters); _drawMultArc(canvas, mPaints, mUseCenters, mRectF, rectPaint); public void initDrawMultArc(Paint[] mPaints, boolean[] mUseCenters) { // 2. 填充圆弧带圆心(扇形) // 3. 只绘圆周,不含圆心 // 4. 只绘圆周,带圆心(扇形) public void _drawMultArc(Canvas canvas, Paint[] mPaints, //初始化弧形的区域,决定弧形的开关和位置 Log.i(TAG, "mRectF[3] " + mRectF[3].left + " " + mRectF[3].bottom); /** public void drawPathWithText(Canvas canvas) { Path path = new Path(); int pathStartX = 10; //清除path属性 //第三个图形 //设置字体属性 public void drawCompass(Canvas canvas, int startX, int startY) { canvas.save(); paint.setAntiAlias(true); //使用path绘制路径文字 Paint tmpPaint = new Paint(paint); //小刻度画笔对象 float y = startY - 100; for(int i = 0 ; i < count ; i++) { if(i % 5 == 0) { } else { //绘制中心点 public void initPath(Canvas canvas, Paint pathPaint, Path path, //设置开始位置 |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
@Override
protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.GREEN); paint.setStyle(Style.STROKE); paint.setStrokeWidth(3); //平移 //旋转 //扭曲 //缩放 |
1
2 3 4 5 6 7 8 9 10 11 12 |
/** 保存Matrix **/
public static final int MATRIX_SAVE_FLAG = 0x01; /** 保存Clip **/ public static final int CLIP_SAVE_FLAG = 0x02; /** 保存Alpha */ public static final int HAS_ALPHA_LAYER_SAVE_FLAG = 0x04; /** 保存Color */ public static final int FULL_COLOR_LAYER_SAVE_FLAG = 0x08; /** 保存整个Layer的Clip */ public static final int CLIP_TO_LAYER_SAVE_FLAG = 0x10; /** 保存所有,很少用 */ public static final int ALL_SAVE_FLAG = 0x1F; |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
canvas.drawColor(Color.WHITE);
canvas.translate(10, 10); mPaint.setColor(Color.RED); canvas.restore(); |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
//Region API Android4.4 2015年5月16日
/**构造方法*/ Region(); //创建一个空的区域 Region(Region region); //拷贝一个region Region(Rect r); //根据Rect创建 Region(int left, int top, int right, int bottom); //创建一个矩形的区域 /*设置函数方法*/ //判断 //返回边界 //判断是否相交 //平移和变换 //组合 |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
@Override
protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); //总的显示荡然无存 Region rgn = new Region(); drawRegion(canvas, rgn, paint); private void drawRegion(Canvas canvas, Region rgn, Paint paint) { while (iter.next(r)) { |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
public class MyClipView extends View {
private Paint mPaint; private Path mPath; public MyClipView(Context context) { super(context); setFocusable(true); mPaint = new Paint(); mPath = new Path(); canvas.drawColor(Color.WHITE); mPaint.setColor(Color.RED); mPaint.setColor(Color.GREEN); mPaint.setColor(Color.BLUE); @Override protected void onDraw(Canvas canvas) { canvas.save(); canvas.save(); canvas.save(); canvas.save(); } |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
//Canvas 操作函数 2015年5月15日 Android 4.4
int MATRIX_SAVE_FLAG = 0x01; Canvas(); boolean isHardwareAccelerated(); //图层保存与恢复操作 void setMatrix(Matrix matrix); DrawFilter getDrawFilter(); //填充RGB |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
public class MyCanvasDrawView extends View { private static final String TAG = null; public MyCanvasDrawView(Context context) { } @Override public void drawLine(Canvas canvas) { public void drawMultArc(Canvas canvas) { //边框的画笔 mUseCenters = new boolean[4]; initDrawMultArc(mPaints, mUseCenters); _drawMultArc(canvas, mPaints, mUseCenters, mRectF, rectPaint); public void initDrawMultArc(Paint[] mPaints, boolean[] mUseCenters) { // 2. 填充圆弧带圆心(扇形) // 3. 只绘圆周,不含圆心 // 4. 只绘圆周,带圆心(扇形) public void _drawMultArc(Canvas canvas, Paint[] mPaints, //初始化弧形的区域,决定弧形的开关和位置 Log.i(TAG, "mRectF[3] " + mRectF[3].left + " " + mRectF[3].bottom); /** public void drawPathWithText(Canvas canvas) { Path path = new Path(); int pathStartX = 10; //清除path属性 //第三个图形 //设置字体属性 public void drawCompass(Canvas canvas, int startX, int startY) { canvas.save(); paint.setAntiAlias(true); //使用path绘制路径文字 Paint tmpPaint = new Paint(paint); //小刻度画笔对象 float y = startY - 100; for(int i = 0 ; i < count ; i++) { if(i % 5 == 0) { } else { //绘制中心点 public void initPath(Canvas canvas, Paint pathPaint, Path path, //设置开始位置 |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
@Override
protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(Color.GREEN); paint.setStyle(Style.STROKE); paint.setStrokeWidth(3); //平移 //旋转 //扭曲 //缩放 |
1
2 3 4 5 6 7 8 9 10 11 12 |
/** 保存Matrix **/
public static final int MATRIX_SAVE_FLAG = 0x01; /** 保存Clip **/ public static final int CLIP_SAVE_FLAG = 0x02; /** 保存Alpha */ public static final int HAS_ALPHA_LAYER_SAVE_FLAG = 0x04; /** 保存Color */ public static final int FULL_COLOR_LAYER_SAVE_FLAG = 0x08; /** 保存整个Layer的Clip */ public static final int CLIP_TO_LAYER_SAVE_FLAG = 0x10; /** 保存所有,很少用 */ public static final int ALL_SAVE_FLAG = 0x1F; |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
canvas.drawColor(Color.WHITE);
canvas.translate(10, 10); mPaint.setColor(Color.RED); canvas.restore(); |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
//Region API Android4.4 2015年5月16日
/**构造方法*/ Region(); //创建一个空的区域 Region(Region region); //拷贝一个region Region(Rect r); //根据Rect创建 Region(int left, int top, int right, int bottom); //创建一个矩形的区域 /*设置函数方法*/ //判断 //返回边界 //判断是否相交 //平移和变换 //组合 |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
@Override
protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); //总的显示荡然无存 Region rgn = new Region(); drawRegion(canvas, rgn, paint); private void drawRegion(Canvas canvas, Region rgn, Paint paint) { while (iter.next(r)) { |
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
public class MyClipView extends View {
private Paint mPaint; private Path mPath; public MyClipView(Context context) { super(context); setFocusable(true); mPaint = new Paint(); mPath = new Path(); canvas.drawColor(Color.WHITE); mPaint.setColor(Color.RED); mPaint.setColor(Color.GREEN); mPaint.setColor(Color.BLUE); @Override protected void onDraw(Canvas canvas) { canvas.save(); canvas.save(); canvas.save(); canvas.save(); } |
Android Canvas API总结和使用方法相关推荐
- clear html5代码,用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
在现实世界中,我们使用画笔在画板上进行绘画:在html5 canvas中,我们同样可以使用canvas的画笔--CanvasRenderingContext2D对象在canvas上进行绘画.众所周知, ...
- Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】
目 录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...
- Android 中的 Canvas API
使用 Android Widget 组中不存在的自定义 UI 元素并想知道它是如何制作的? 这是 Android 中存在的 Canvas API 的魔力.我认为画布这个名字本身就定义了它是艺术家的游乐 ...
- Android基础入门教程——8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash
Android基础入门教程--8.3.18 Canvas API详解(Part 3)Matrix和drawBitmapMash 标签(空格分隔): Android基础入门教程 本节引言: 在Canva ...
- 介绍Android中的Paint和Canvas的概念和使用方法
下面开始正式介绍内容 一.介绍Android中的Paint和Canvas的概念和使用方法 Android中的Paint和Canvas的概念是很简单的,就是我们用画笔在画布上进行绘制没什么难度的,我们只 ...
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( Bitmap_compress 方法解析 | Skia 二维图形库 | libjpeg 函数库 | libpng 函数库 )
文章目录 一. 图片质量压缩方法 二. Skia 二维图形库 三. libjpeg.libpng 函数库引入 在博客 [Android 内存优化]图片文件压缩 ( Android 原生 API 提供的 ...
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )
文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...
- (四)Canvas API方法和属性汇总
canvas主要属性和方法 方法 描述 save() 保存当前环境的状态 restore() 返回之前保存过的路径状态和属性 createEvent() getContext() 返回一个对象,指 ...
- android 画布控件,Android canvas画图操作之切割画布实现方法(clipRect)
本文实例讲述了Android canvas画图操作之切割画布实现方法.分享给大家供大家参考,具体如下: android切割画布的历程不算很难,可是理解起来也比较麻烦,这里写一下我的理解 但是不一定正确 ...
- 每日一句api Android,金山每日一句 API 接口调用接入方法
原标题:金山每日一句 API 接口调用接入方法 金山每日一句 API 大家都听说过吧,金山每日一句 API 每次刷新网页都会带来一个新的语句,现在盒子部落公布金山每日一句 API 接口,可以直接在自己 ...
最新文章
- Android框架之路——EventBus的使用
- Swift2.0 中的String(一):常用属性
- Mybatis入门学习---创建第一个Mybatis程序
- 计算机教室内网连接不了,校园网登陆不了内网怎么办?校园网登陆不了内网的解决方法...
- VirtualBox下Ubuntu利用桥接方式上网
- GetWeApp聊天室 代码(微信小程序)
- useEffect和useLayoutEffect区别
- ubuntu proxy
- [转]通过崩溃地址找错误行数之Delphi版
- pdf文档怎么删除内容页面
- EXCEL 常用的宏代码大全
- 中国省份城市数据库表
- 知识笔记 - 平头哥ratel安卓Hook框架的安装与简单使用
- 学习SEO就到SEOWHY,SEO十万个为什…
- 计算机教研评课记录,信息技术2.0 | 评课磨课共成长 信息技术促进步 ——东光县第二实验小学信息技术2.0数学组 课例研讨...
- ClickHouse技术分享PPT
- 使用Wechaty搭建微信文件日程匣子
- shell脚本遍历目录下的所有文件并进行操作
- jquery.slides.js 幻灯片脚本使用方法
- java注解看这一篇就够了