Android *** Drawable、Bitmap、Canvas、Paint之间区别
来源:互联网 发布:手机贴纸淘宝 编辑:程序博客网 时间:2024/05/01 00:39
1.基本介绍:
Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。
Drawable - 作为Android平台下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。
Canvas - 名为画布,我们可以看作是一种处理过程,使用各种方法来管理Bitmap、GL或者Path路径,同时它可以配合Matrix矩阵类给图像做旋转、缩放等操作,同时Canvas类还提供了裁剪、选取等操作。Canvas主要用于2D绘图,那么它也提供了很多相应的drawXxx()方法,方便我们在Canvas对象上画画,drawXxx()具有多种类型,可以画出:点、线、矩形、圆形、椭圆、文字、位图等的图形,这里就不再一一介绍了,只介绍几个Canvas中常用的方法:
- void drawBitmap(Bitmap bitmap,float left,float top,Paint paint):在指定坐标绘制位图
- void drawLine(float startX,float startY,float stopX,float stopY,Paint paint):根据给定的起始点和结束点之间绘制连线
- void drawPath(Path path,Paint paint):根据给定的path,绘制连线
- void drawPoint(float x,float y,Paint paint):根据给定的坐标,绘制点
- void drawText(String text,int start,int end,Paint paint):根据给定的坐标,绘制文字
- int getHeight():得到Canvas的高度
- int getWidth():得到Canvas的宽度
The Canvas class holds the "draw" calls.To draw something, you need 4 basic components:
A Bitmap to hold the pixels → 一个位图来保存像素
a Canvas to host the draw calls (writing into the bitmap) → 画布主办的绘制调用(写入位图)
a drawing primitive (e.g. Rect, Path, text, Bitmap) → 绘图原语(如矩形,路径,文本,位图)
and a paint (to describe the colors and styles for the drawing) → 以及涂料(以描述的颜色和样式图纸)
Paint - 我们可以把它看做一个画图工具,比如画笔、画刷。他管理了每个画图工具的字体、颜色、样式,主要用于设置绘图风格,包括画笔颜色、画笔粗细、填充风格等。如果涉及一些Android游戏开发、显示特效可以通过这些底层图形类来高效实现自己的应用。Paint中提供了大量设置绘图风格的方法,这里仅列出一些常用的:
- setARGB(int a,int r,int g,int b):设置ARGB颜色。
- setColor(int color):设置颜色。
- setAlpha(int a):设置透明度。
- setPathEffect(PathEffect effect):设置绘制路径时的路径效果。
- setShader(Shader shader):设置Paint的填充效果。
- setAntiAlias(boolean aa):设置是否抗锯齿。
- setStrokeWidth(float width):设置Paint的笔触宽度。
- setStyle(Paint.Style style):设置Paint的填充风格。
- setTextSize(float textSize):设置绘制文本时的文字大小。
- setXfermode(Xfermode xfermode):设置绘制的渲染模式
2.转换方法:
1)Bitmap 转化为 byte
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
byte[] array= out.toByteArray();
2)byte转化为bitmap
private Bitmap Bytes2Bimap(byte[] b){
if(b.length!=0){
return BitmapFactory.decodeByteArray(b, 0, b.length);
}
else {
return null;
}
}
3)bitmap 转换 drawable
Bitmap bitmap = new Bitmap(...);
Drawable drawable = new BitmapDrawable(bitmap);
//Drawable drawable = new FastBitmapDrawable(bitmap);
4)Drawable to Bitmap
public static Bitmap drawableToBitmap(Drawable drawable) {
Bitmap bitmap = Bitmap.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ?Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
//canvas.setBitmap(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}
参考 http://bingtian.iteye.com/blog/642128
- Android *** Drawable、Bitmap、Canvas、Paint之间区别
- Android中Drawable Bitmap Canvas Paint之间区别与转换
- Android中Drawable Bitmap Canvas Paint之间区别与转换
- Android中Drawable Bitmap Canvas Paint之间区别
- Android中Drawable Bitmap Canvas Paint之间区别
- Android中Drawable Bitmap Canvas Paint之间区别
- android中的Bitmap,Drawable,Canvas,Paint之间的区别和转换
- android中的Bitmap,Drawable,Canvas,Paint之间的区别和转换
- Hello Android - Android Drawable、Bitmap、Canvas和Paint的区别
- Android Drawable、Bitmap、Canvas和Paint的区别
- Android Drawable、Bitmap、Canvas和Paint的区别
- Android Drawable、Bitmap、Canvas和Paint的区别
- android 中Drawable、Bitmap、Canvas和Paint的区别
- Android Drawable、Bitmap、Canvas和Paint的区别
- Android Drawable、Bitmap、Canvas和Paint的区别
- Android Drawable、Bitmap、Canvas和Paint的区别
- Android下drawable,Bitmap,Canvas与Paint区别
- android中drawable bitmap canvas paint的转换和区别
- 手把手教你反编译别人的app
- BL0,BL1,BL2是什么?
- Javaweb中最简单的文件上传
- hdu 2084 数塔
- Java中怎样判断一个字符串是否是数字
- Android *** Drawable、Bitmap、Canvas、Paint之间区别
- MWC-电机、电池螺旋桨搭配
- iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求
- DOO-SABIN 细分正方体(1)利用邻接矩阵表示
- Linux — 操作系统课程设计笔记
- Dubbo源码分析(九):与spring融合
- 启动Mongo之由于目标计算机积极拒绝,无法连接--mongoDB连接错误解决办法
- Prototype使用Form操作表单
- L2范数归一化