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),往右往下為正,此時效果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM