Android学习记录:Paint,Canvas和Bitmap
2015-09-22 13:12
399 查看
在Java中,利用过双缓冲技术,先将画笔画在内存上,再转化为图片,调出来。
当画的东西过多造成处理不过来时,双缓冲技术将防止闪屏。
在Paint方法下,我们这样写:
利用g2来绘图,然后再将tmp画在g上面
在安卓中,我们也利用类似的思维。
其中Bitmap类似于BufferedImage,Canvas类似于Graphics,而paint则类似于画笔,原来是在Graphics下直接设置颜色,而现在则需要在paint下设置颜色,并在Canvas绘制传参时加入paint。
其中flag用来判断是否已经创立画布。
当画的东西过多造成处理不过来时,双缓冲技术将防止闪屏。
在Paint方法下,我们这样写:
BufferedImage tmp = new BufferedImage(1200, 900, BufferedImage.TYPE_INT_ARGB); Graphics g2 = tmp.createGraphics();
利用g2来绘图,然后再将tmp画在g上面
g.drawImage(tmp, 0, 0, this);
在安卓中,我们也利用类似的思维。
其中Bitmap类似于BufferedImage,Canvas类似于Graphics,而paint则类似于画笔,原来是在Graphics下直接设置颜色,而现在则需要在paint下设置颜色,并在Canvas绘制传参时加入paint。
public boolean onTouch(View v, MotionEvent event) { //获取当前时间的动作 if(flag == 0){ bitmap = Bitmap.createBitmap(iv.getWidth(),iv.getHeight(), Bitmap.Config.ARGB_8888); flag = 1; } canvas = new Canvas(bitmap); int action = event.getAction(); switch(action){ case MotionEvent.ACTION_DOWN:{ a = event.getX(); b = event.getY(); }break; case MotionEvent.ACTION_UP:{ c = event.getX(); d = event.getY(); canvas.drawLine(a,b,c,d, paint); }break; } canvas.drawBitmap(bitmap, 0,0, paint); iv.setImageBitmap(bitmap); return true; }
其中flag用来判断是否已经创立画布。
相关文章推荐
- 使用RadioButton 和RadioGroup
- Android进程与线程
- 5个最佳Android测试框架
- Android SoundPool使用模板
- Android4.4.2配置修改记录
- onActivityResult无故被调用
- Android中home键和back键区别实例分析
- Android 自定义View 实现垂直滑动页
- Android判断服务是否运行及定位问题实例分析
- Android Studio 中 添加作者 时间 之类的 注释
- android R 文件消失
- android权限大全
- Android Studio整合.SO到APK
- Android加薪利器---handle异步下载图片
- Android背景渐变色(shape,gradient)
- Android 搜索 把软键盘上的回车键改为搜索
- 先锋军Android注射技术《三》
- Android WebView加载本地html并实现Java与JS交互
- android系统启动流程图解
- 手机客户端android与WIFI模块之联想