2011-10-24 47 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