2013-03-03 117 views
0

在我的应用程序触摸事件我想绘制矩形 - 我试着this.butnot得到如何绘制。请帮助我。 我想在触摸的点上绘制矩形。 如何在drawRect()方法中使用getX()和getY()? 如下代码 -ontouch在android绘制矩形

public boolean onTouch(View v, MotionEvent event) { 
      if(event.getAction()==MotionEvent.ACTION_DOWN) { 
           int X=event.getX(); int Y=event.getY(); 
        Paint paint = new Paint(); 
        paint.setAntiAlias(true); 
        paint.setColor(getResources().getColor(R.color.Yellow)) ; 
        paint.setAlpha(opacity); 
           Canvas canvas1 = new Canvas(mutableimage1); 
          canvas1.drawRect(2.5f,2.5f,2.5f,2.5f, paint); 
           } 
       } 

回答

0

不要在onTouch方法实例化一个新的对象:canvas1 = new Canvas(...) 会造成死机和滞后。创建此画布以善于创建视图。

要小心,我认为你的drawRect()调用不会吸引你所需要的: 您绘制一个矩形,与X = 2.5 Y = 2.5宽度= 2.5高= 2.5

我假设你需要定位您的矩形根据触摸的位置是:

//set the x and y pos according to the touch point 
// by removing half the size of the rect we center it on this point ;) 
canvas1.drawRect(X-1.25f, Y-1.25f, 2.5F, 2.5f, paint); 

否则这是相当正确的,但要知道,你是一个可变的位图(“mutableimage1”)绘制将没有必要显示。

您可能想要在视图的onDraw(Canvas viewCanvas)方法中添加显示。 使用:

viewCanvas.drawBitmap(mutableimage1, 0,0, aPreviouslyCreatedPaint);

+0

actully我试图借鉴image.and矩形当我trird为圆其working.but矩形没有显示 – 2013-03-03 13:56:39

+0

好吧,你可能需要比较你的代码为矩形和圈?有什么区别可以导致矩形不被绘制。到目前为止我有帮助吗? – Guian 2013-03-03 14:06:01