一.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);
}
}
上述方法可以裁定图片的大小尺寸,在自定义位图大小的情况下通常采用这种方法