2015-02-23 138 views
1

在我的應用程序中,我需要在整個屏幕上繪製一個位圖。出於某種原因,當我繪製位圖時,只有部分位圖加載在屏幕的一部分上。換句話說,屏幕上並未顯示全部圖像。下面是一段我的代碼是我畫的位圖:如何在整個屏幕上在畫布上繪製位圖?

  byte[]byteArray=getIntent().getByteArrayExtra("image"); 
      Bitmap tmp=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length); 


      operation = Bitmap.createBitmap(tmp.getWidth(), tmp.getHeight(), Bitmap.Config.ARGB_8888); 
      Canvas c = new Canvas(operation); 
      Paint paint = new Paint(); 
      tmp.setDensity(c.getDensity()); 

      c.drawBitmap(tmp, 0f, 0f, paint); 
      tmp.recycle(); 

和:

private void drawOverlays() { 
    Canvas c = null; 
    try { 
     c = holder.lockCanvas(null); 
     synchronized (holder) { 
      if (c != null) 
       c.drawBitmap(operation, 0, 0, null); 
     } 
    } catch (Exception e) { 
     Log.e("SurfaceView", "Error drawing frame", e); 
    } finally { 
     // do this in a finally so that if an exception is thrown 
     // during the above, we don't leave the Surface in an 
     // inconsistent state 
     if (c != null) { 
      holder.unlockCanvasAndPost(c); 
     } 
    } 
} 
+0

createScaledBitmap – mjstam 2015-02-23 16:17:28

+0

這是如何完成的? – 2015-02-24 21:10:48

回答

2

對於您需要得到寬度以及設備的高度,然後縮放圖像到尺寸和顯示它在畫布上。

這是您的代碼的修改。

//add this code before your code 
Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 

//your code with modification 
byte[]byteArray=getIntent().getByteArrayExtra("image"); 
Bitmap tmp=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length); 
operation = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(operation); 
Paint paint = new Paint(); 
tmp.setDensity(c.getDensity()); 
c.drawBitmap(tmp, 0f, 0f, paint); 
tmp.recycle(); 

現在它會填滿整個屏幕,確保您將畫布應用於整個屏幕。

+0

我知道這已經有一段時間了,但我真的需要解決我遇到的問題。由於某些原因,當我發送位圖操作並顯示它時,它只顯示圖片的左上角。 – 2015-06-02 14:13:21

+0

你有沒有試過這段代碼?你在xml文件中給你的畫布什麼寬度和高度參數? – dakshbhatt21 2015-06-03 13:37:48

+0

我在我的代碼中發現了問題,我不得不將tmp設置爲相同的大小,唯一的問題是我的pic的buttom部分被切斷(在我的Moto G2上) – 2015-06-04 08:43:48