android canvas的drawBitmap
1、基本的绘制图片方法
//Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置
drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
2、对图片剪接和限定显示区域
第一个Rect 代表要绘制的bitmap 区域,第二个 Rect 代表的是要将bitmap 绘制在屏幕的什么地方
drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint);
Rect src: 是对图片进行裁截,若是空null则显示整个图片
RectF dst:是图片在Canvas画布中显示的区域,
大于src则把src的裁截区放大,
小于src则把src的裁截区缩小。
此时我先定义两个Rect,mSrcRect 取值为整个Bitmap 区域 ,mDestRect 取值为view左上方和bitmap同样大小;
- private Rect mSrcRect, mDestRect;
- mSrcRect = new Rect(0, 0, mBitWidth, mBitHeight);
- mDestRect = new Rect(0, 0, mBitWidth, mBitHeight);
在onDraw 里绘制该位图:
- canvas.drawBitmap(mBitmap, mSrcRect, mDestRect, mBitPaint);
画在左上方似乎缺乏美感,我们把美女画在view的中心,没错,我们只需要改变mDestRect:
- // 计算左边位置
- int left = mHalfWidth - mBitWidth / 2;
- // 计算上边位置
- int top = mHalfHeight - mBitHeight / 2;
- mDestRect = new Rect(left, top, left + mBitWidth, top + mBitHeight);
位置计算的时候,只需要注意在android屏幕坐标系里,左上角的位置是(0,0),往右往下为正,此时效果如下: