http://www.cnblogs.com/error404/archive/2012/02/05/2339255.html
/*---------------------------------
* 绘制图片
* @param x屏幕上的x坐标
* @param y屏幕上的y坐标
* @param w要绘制的图片的宽度
* @param h要绘制的图片的高度
* @param bx图片上的x坐标
* @param by图片上的y坐标
*
* @return null
------------------------------------*/
public static void drawImage(Canvas canvas, Bitmap blt, int x, int y,
int w, int h, int bx, int by) {
Rect src = new Rect();// 图片 >>原矩形
Rect dst = new Rect();// 屏幕 >>目标矩形
src.left = bx;
src.top = by;
src.right = bx + w;
src.bottom = by + h;
dst.left = x;
dst.top = y;
dst.right = x + w;
dst.bottom = y + h;
// 画出指定的位图,位图将自动--》缩放/自动转换,以填补目标矩形
// 这个方法的意思就像 将一个位图按照需求重画一遍,画后的位图就是我们需要的了
canvas.drawBitmap(blt, null, dst, null);
src = null;
dst = null;
}
/**
* 绘制一个Bitmap
*
* @param canvas 画布
* @param bitmap 图片
* @param x 屏幕上的x坐标
* @param y 屏幕上的y坐标
*/
public static void drawImage(Canvas canvas, Bitmap bitmap, int x, int y) {
// 绘制图像 将bitmap对象显示在坐标 x,y上
canvas.drawBitmap(bitmap, x, y, null);
}
// GameView.drawImage(canvas, mBitDestTop, miDTX, mBitQQ.getHeight(), mBitDestTop.getWidth(), mBitDestTop.getHeight()/2, 0, 0);
public static void drawImage(Canvas canvas, Bitmap blt, int x, int y, int w, int h, int bx, int by)
{ //x,y表示绘画的起点,
Rect src = new Rect();// 图片
Rect dst = new Rect();// 屏幕位置及尺寸
//src 这个是表示绘画图片的大小
src.left = bx; //0,0
src.top = by;
src.right = bx + w;// mBitDestTop.getWidth();,这个是桌面图的宽度,
src.bottom = by + h;//mBitDestTop.getHeight()/2;// 这个是桌面图的高度的一半
// 下面的 dst 是表示 绘画这个图片的位置
dst.left = x; //miDTX,//这个是可以改变的,也就是绘图的起点X位置
dst.top = y; //mBitQQ.getHeight();//这个是QQ图片的高度。 也就相当于 桌面图片绘画起点的Y坐标
dst.right = x + w; //miDTX + mBitDestTop.getWidth();// 表示需绘画的图片的右上角
dst.bottom = y + h; // mBitQQ.getHeight() + mBitDestTop.getHeight();//表示需绘画的图片的右下角
canvas.drawBitmap(blt, src, dst, null);//这个方法 第一个参数是图片原来的大小,第二个参数是 绘画该图片需显示多少。也就是说你想绘画该图片的某一些地方,而不是全部图片,第三个参数表示该图片绘画的位置
src = null;
dst = null;
}