Android中的画布绘制(一)
来源:互联网 发布:清除微信数据会怎么样 编辑:程序博客网 时间:2024/05/09 14:49
1、画图的要素
(1)画布-->canvas 尺寸--》width&height 布/纸 --》bitmap/view(2)画笔 --》Paint 颜色--》Color 宽度--》stoke width 样式--》flags(字体,填充方式,抗锯齿等等)(3)画的对象 --》line,shape,bitmap
2、创建一张画布
/** * 定义canvas的尺寸,单位为像素 */private static final int WIDTH = 1000;private static final int HEIGHT = 1000;private Bitmap bitmap;private Canvas canvas;/** * canvas本身是不能保存绘制结果,需要一个保存绘制结果* 准备canvas,canvas的绘制结果输出到一个bitmap中*/private void prepareCanvas() { bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_8888); canvas = new Canvas(bitmap);}canvas.drawColor(Color.WHITE);imageView.setImageBitmap(bitmap);
2、画坐标系
/** * 坐标在画布上的缩进尺寸 */ private static final int PADDING = 100; Paint paint = new Paint(); paint.setStrokeWidth(5); // 线条宽度 paint.setColor(Color.LTGRAY); // 设置颜色 int originX = PADDING; int originY = HEIGHT - PADDING; // 先画横坐标 canvas.drawLine(originX, originY, WIDTH - PADDING, originY, paint); // 再画纵坐标 canvas.drawLine(originX, originY, originX, PADDING, paint);
3、画文字
Paint paint = new Paint(); // 设置标题 paint.setColor(Color.BLACK); paint.setTextSize(50); paint.setTypeface(Typeface.MONOSPACE);//设置字体 paint.setTextAlign(Paint.Align.CENTER);//设置字体对齐方式 String title = "柱状图示例"; canvas.drawText(title, WIDTH / 2, 70, paint); // 给标题加一条下划线 paint.setColor(0xFFFF4081); // paint提供了计算文本宽的方法 float width = paint.measureText(title); paint.setStrokeWidth(6); float startX = (WIDTH - width) / 2; float startY = 70 + 15; canvas.drawLine(startX, startY, startX + width, startY, paint); // 纵坐标值,每隔 100 标注一个 paint.setTextSize(40); paint.setColor(Color.LTGRAY); paint.setTextAlign(Paint.Align.RIGHT); for (int i = 0; i < 9; ++i) { float x = PADDING - 20; float y = HEIGHT - (i + 1) * 100; canvas.drawText(String.valueOf(i), x, y, paint); }
4、画柱状体
Paint paint = new Paint(); paint.setColor(0xFF009688); float left = -15; float top = (int) (HEIGHT - PADDING - value * 100); float right = 15; float bottom = HEIGHT - PADDING; canvas.drawRect(left, top, right, bottom, paint); // 顶上标注数值 paint.setTextSize(30); paint.setTextAlign(Paint.Align.CENTER); paint.setColor(0xFFFDD835); String text = String.valueOf(value); canvas.drawText(text, 0, top - 10, paint); // 下面标注季度 canvas.save();//保存之前canvas状态 canvas.rotate(-30, 30, bottom + 30); paint.setColor(0xFF546E7A); canvas.drawText(item, 0, bottom + 30, paint); canvas.restore();//恢复之前保存的canvas状态 /** * 平移 */ private void translate() { for (int index = 0; index < 4; index++) { canvas.save(); canvas.translate(PADDING + (index + 1) * 150, 0); drawRect(values[index], items[index]); canvas.restore(); } }
(1)save&restore
可保存对canvas设置的各种属性,例如rotate,scale,translate,skew,clip 两者配对使用,用于保存和恢复现场 save有计数,可通过restoreToCount指定恢复到哪一级
0 0
- Android中的画布绘制(一)
- Android中的画布绘制(二)
- Android画布和图形绘制---Canvas and Drawables(一)
- Android画布和图形绘制---Canvas and Drawables(一)
- android 中的绘制类Paint 画笔,Canvas 画布,Bitmap 类和BitmapFactory及自定义属性
- Android画布和图形绘制---Canvas and Drawables(二)
- Android画布和图形绘制---Canvas and Drawables(四)
- Android画布和图形绘制---Canvas and Drawables(五)
- Android画布和图形绘制---Canvas and Drawables(二)
- Android画布和图形绘制---Canvas and Drawables(三)
- Android画布和图形绘制---Canvas and Drawables(四)
- Android画布和图形绘制---Canvas and Drawables(五)
- Android 自定义View探索——画布绘制
- Android画布和图形绘制---Canvas and Drawables
- Android 画笔画布基础(一)
- VC 自创画布绘制
- html5画布-绘制矩形
- Html5画布绘制七巧板
- CSAPP(深入理解计算机系统)第二版家庭作业答案-第二章
- spring batch 学习笔记
- El表达式截取字符串-替换字符-等
- android.support.v4.view.ViewPager控件的位置
- swing界面的简单使用
- Android中的画布绘制(一)
- js的休眠实现---sleep()
- 正则表达式一览表
- MySQL使用rand函数实现随机数[转]
- CMAKE安装VTK时报错
- python数据分析师面试题选
- 构造器代理 (二)
- 第5章 引用类型(10)基本包装类型
- CentOS release 6.6 (Final) 编译mesos-1.1.0