2011-10-24 45 views
3

我有一個位圖,我得出這樣的:如何設置drawBitmap被非全屏

bit = BitmapFactory.decodeResource(getResources(), 
        R.drawable.anim_ctrl_panel); 
Paint paint = new Paint(); 
canvas.drawBitmap(bit, 80, 440, paint); 

的問題是圖像設置爲全屏。對onTouchEvent方法我實現了位圖的事件以及我選擇屏幕上的任何地方。我希望圖像具有某種特定的位置,只有在該位置才能實現該事件。我怎樣才能做到這一點?

編輯:問題出在onTouchEvent方法。這是解決方案:

public boolean onTouchEvent(MotionEvent event) {if(80 <= event.getX() && event.getX()<= (80+bit.getWidth()/2) && (440 <= event.getY() && (event.getY() <= 440+bit.getHeight()))){ 
      //... 
     }else if((80+bit.getWidth()/2) <= event.getX() && event.getX()<= (80+bit.getWidth()) && (440 <= event.getY() && (event.getY() <= 440+bit.getHeight()))){ 
      //... 
      } 

這幫助我:How can I check the Image is Touched using OnTouch()

回答

1

圖像特別的地區,我認爲矩形是這個有用,

像這樣(在我的情況下,它的工作對我來說)

Canvas canvas = new Canvas(bitmap); 
final Paint paint = new Paint();   
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());   
paint.setAntiAlias(true);   
canvas.drawARGB(0, 0, 0, 0);   
canvas.drawBitmap(bitmap, rect, rect, paint); 

試試吧。

欲瞭解更多信息看Android - Drawing (Core)

感謝。

+0

我得到同樣的事情......我的問題是onTouchEvent方法...我只提出這個:if(event.getX()> bit.getWidth()/ 2),我也應該爲y設置一個條件,對吧? – Gabrielle

+0

製作特定的ImageView對象,並使用矩形和畫布修復高度和寬度(無論您需要什麼),然後實現onTouch以查看相應的視圖。 (根據我的意見和你的問題)。謝謝。 – user370305

+0

或進行計算,getX任何getY觸摸,並使條件來檢查它是否在您的圖像的矩形的座標,然後做wahtever你想要的。 – user370305

1

試試這個:

canvas.save(); 
canvas.translate(posX, posY); 
canvas.drawBitmap(bit, 0f, 0f, paint); 
canvas.restore(); 
+0

這段代碼和我的代碼做的事情是一樣的 – Gabrielle

+0

真的很相似,但它應該可以工作。我也嘗試限制你想繪製的區域。 http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap(android.graphics.Bitmap,android.graphics.Rect,android.graphics.RectF,android.graphics.Paint) – vicentazo