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同样大小;

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. private Rect mSrcRect, mDestRect;  

 

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. mSrcRect = new Rect(0, 0, mBitWidth, mBitHeight);  
  2. mDestRect = new Rect(0, 0, mBitWidth, mBitHeight);  

 

在onDraw 里绘制该位图:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. canvas.drawBitmap(mBitmap, mSrcRect, mDestRect, mBitPaint);  

画在左上方似乎缺乏美感,我们把美女画在view的中心,没错,我们只需要改变mDestRect:

 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. // 计算左边位置  
  2. int left = mHalfWidth - mBitWidth / 2;  
  3. // 计算上边位置  
  4. int top = mHalfHeight - mBitHeight / 2;  
  5. mDestRect = new Rect(left, top, left + mBitWidth, top + mBitHeight);  

 

位置计算的时候,只需要注意在android屏幕坐标系里,左上角的位置是(0,0),往右往下为正,此时效果如下:

posted @ 2016-09-14 13:36  我在途中  阅读(20792)  评论(0编辑  收藏  举报