2013-05-30 95 views
0

我有這個功能,用這個功能我可以用一個小旋轉來顯示圖像。 我試圖在位圖周圍顯示一個白色邊框。帶邊框的Android位圖

Matrix m = new Matrix(); 
     m.postRotate(rotation, center.x, center.y); 
     m.postTranslate((position.x - center.x) - xOffset , position.y - (center.x)); 

     // set the current position to the updated position 
     positionMatrix.set(m);    
     renderAnimation();   
     c.drawBitmap(this.bitmap , positionMatrix, paint); 

我想要使用此功能添加白色邊框:參考:stackoverflow border

RectF targetRect = new RectF(left+10, top+10, left + scaledWidth, top + scaledHeight); 
    Bitmap dest = Bitmap.createBitmap(this.bitmap.getWith() +20, this.bitmap.getHeight() +20, this.bitmap.getConfig()); 
    Canvas canvas = new Canvas(dest); 
    canvas.drawColor(Color.WHITE); 
    canvas.drawBitmap(this.bitmap, null, targetRect, null); 
c.drawBitmap(this.bitmap , positionMatrix, paint); 

但是,並不是作品,可一些幫助我

回答

3

我想你應該遵循以下步驟:

  1. 創建一個位圖width = yourImageWidth + boderThick和height = yourImageHeight + boderThick
  2. 帆布畫一個白色的矩形(先畫你的背景)
  3. 畫布繪製圖像(你需要居中圖像)

也許你犯了一個錯誤計算的一側時,或在錯誤的畫訂購。請記住繪圖時使用相同的畫布。在你的代碼中,我看到你使用c.draw和canvas.draw ...這可能會導致問題。

請參閱下面的代碼:

Paint paint = new Paint(); 
paint.setColor(Color.WHITE); 
paint.setStrokeWidth(3); 
canvas.drawRect(0, 0, 200, 200, paint);//draw your bg 
canvas.drawBitmap(bitmap, 20, 20, paint);//draw your image on bg 

對不起,我沒有太多的時間來檢查你計算的大小。我希望這可以幫助。

+0

@NgyenDoanTung 很好,我的問題或許是: 位圖bmpWithBorder = Bitmap.createBitmap(this.bitmap.getWidth()+ 10 * 2,this.bitmap.getHeight()+ 10 * 2,this.bitmap.getConfig ()); Canvas canvas = new Canvas(bmpWithBorder); canvas.drawColor(Color.WHITE); (this.bitmap,10,10,null); //這是白色邊框 c.drawBitmap(this.bitmap,positionMatrix,paint); //原始圖像 我怎麼知道畫布是否加入? – MrMins

+0

請參閱編輯答案。我希望它可以幫助。 –

+0

@NgyenDoanTung謝謝,我解決了我的問題。謝謝 – MrMins