2015-02-23 99 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