drawable以及Bitmap的基本操作
一.drawable 图形对象,可以转载常用格式的图像,可能是(位图)Bitmapdrawable,或者shapedrawable(图形),还可能是多种其他图片格式GIF,PNG,JEPG
二.Bitmap 就是位图,用于图片的处理
三.Canvas 意为画布,就是绘画的目标区域,用来管理Bitmp或者path路径
下面就是讲到drawable转换成Bitmap的方法
我所知有两种方法(两种方法谁好谁坏,得看情况)
(1)常见的一种方法就是创建个Bitmap出来,再用画布绑定这个位图,将drawable绘到Bitmap上(此方法用于此时的drawable对象不是bitmap图像时)
Bitmap bitmap=Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
//创建一个size宽size高的一个位图 Canvas canvas=new Canvas(bitmap);
//将画布绑定到该位图上,为接下来的drawable绘画做准备 drawable.setBounds(0,0,size,size);
//drawable设置大小与位图相同 drawable.draw(canvas);
//将drawable通过画布画到Bitmap上去
(2)另外一种方法就是直接获取Bitmap(bitmapdrawable)
Bitmap icon=BitmapFactory.decodeResource(context.getResources(),
R.drawable.icon_resource)
//将drawable对象中的icon_resource图像转换成位图文件icon
或者
BitmapDrawable bd = (BitmapDrawable) drawable;
//先转换成Bitdrawable
bitmap = bd.getBitmap();
//再通过getBitmap()获取到Bitmap
另外关于drawmap()方法的说明
drawBitmap()方法:绘制图像,该方法用于在画布上绘制图像,是通过Bitmap对象来实现,当要引入图片资源时,我们可以采取该方法。
drawBitmap (Bitmap bitmap, float left, float top, Paint paint)
参数说明
bitmap:Bitmap对象,代表了图像资源。
left:图像显示的左边位置。
top:图像显示的上边位置。
paint:绘制时所使用的画笔。
在上述方法1中就是采用了该方法。
public class MyTile extends View
{
public Bitmap[] bitmap1;
private static final int size=12;
public MyTile(Context context, AttributeSet attrs)
{
super(context, attrs);
Get_Bitmap();
// TODO 自动生成的构造函数存根
} /* (非 Javadoc)
* @see android.view.View#onDraw(android.graphics.Canvas)
*/
public void Get_Bitmap()
{
bitmap1=new Bitmap[1];
Bitmap bitmap=Bitmap.createBitmap(size, size, Config.ARGB_8888);
//创建一个size正方形大小的新位图
Drawable drawable=getResources().getDrawable
(R.drawable.greenstar);
//获取drawable对象
Canvas canvas=new Canvas(bitmap);
//Bitmap绑定画布
drawable.setBounds(0,0,size,size);
//设置drawable对象大小size
drawable.draw(canvas);
//最后将drawable画到Bitmap的canvas上去 bitmap1[0]=bitmap;
}
protected void onDraw(Canvas canvas)
{
// TODO 自动生成的方法存根
super.onDraw(canvas);
Paint paint=new Paint();
paint.setColor(Color.BLACK);
canvas.drawBitmap(bitmap1[0], 200, 200, paint);
} }
drawable以及Bitmap的基本操作的更多相关文章
- Android Drawable、Bitmap、byte[]之间的转换
转自http://blog.csdn.net/june5253/article/details/7826597 1.Bitmap-->Drawable Bitmap drawable2Bitma ...
- Drawable和Bitmap区别
Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565.RGB888.作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低.我们理解为一种存储对象比较好 ...
- 获取应用图标,Drawable 转bitmap
获取应用图标: PackageManager p = context.getPackageManager(); Drawable draw=null; ApplicationInfo info; tr ...
- 简单谈谈Resource,Drawable和Bitmap之间的转换
一直接触这些东西,还是归个类整理一下比较好. Resource -> Drawable Drawable draw1 = this.getResources().getDrawable(R.dr ...
- android 获取资源文件 r.drawable中的图片转换为drawable、bitmap
1.R-Drawable Resources resources = mContext.getResources(); Drawable drawable = resources.getDrawabl ...
- Android -- Drawable与Bitmap测试
Drawable 以下这个是测试加载10 ...
- Drawable和Bitmap转换
一.Bitmap转Drawable Bitmap mBitMap=getYourBitMap(); //getYourBitMap()是你获取BitMap的方法 BitmapDrawable mBit ...
- Drawable、Bitmap、byte[]之间的转换
android在处理一写图片资源的时候,会进行一些类型的转换: 1 Drawable → Bitmap 的简单方法 ((BitmapDrawable)res.getDrawable(R.drawabl ...
- Drawable与Bitmap(转)
Drawable 以下这个是测试加载10 ...
随机推荐
- 前端模块化开发之seaJs
了解后端语言的童鞋一定听过模块化开发的概念,比如java.python等后端语言都有自己的模块化特性,然而和后端语言相比,javascript还尚未实现模块化的功能,虽然之后的更高版本可能引入模块化开 ...
- 一行代码实现js数组去重
console.log([...new Set([1,2,3,4,2,1,2,2,2,167,4,3,32,2,1])])
- ECLIPSE ANDROID PROJECT IMPORT SUMMARY
ECLIPSE ANDROID PROJECT IMPORT SUMMARY======================================Manifest Merging:------- ...
- 交换排序---快速排序算法(Javascript版)
快速排序是对冒泡排序的一种改进.通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行 ...
- 【SQL】靠谱的TRIM函数,附赠过程一枚
SQL中有LTRIM和RTRIM这两个函数分别用于去除字符串的首.尾空格,缺乏常见的能同时去除首尾的TRIM函数,另外,这俩函数都只对[空格]有效,所以如果首尾是制表符.换行符等等[空白],它们是不处 ...
- 【要什么自行车】ASP.NET MVC4笔记03:调用编辑器 kindeditor
参考:http://www.cnblogs.com/guzhongx/p/kindeditor.html 1.下载kindeditor,存放于Content文件夹下 <script src=&q ...
- .net断点续传的原理
在了解HTTP断点续传的原理之前,先来说说HTTP协议,HTTP协议是一种基于tcp的简单协议,分为请求和回复两种.请求协议是由客户机(浏览器)向服务器(WEB SERVER)提交请求时发送报文的协议 ...
- 【从API学英语】-DriverManager
原文: The basic service for managing a set of JDBC drivers. NOTE: The DataSource interface, new in the ...
- MFC 阶段学习总结
由于项目需求,需要用到C++开发软件,所以开始学习C++,重点是MFC,因为是窗体应用,感觉win32的比较麻烦,还是MFC方便点.至于为什么要用C++呢, 由于C++应用不需要客户额外安装环境和加密 ...
- 【Java每日一题】20161024
20161021问题解析请点击今日问题下方的"[Java每日一题]20161024"查看 package Oct2016; public class Ques1024 { publ ...