0

タッチイベントのアプリケーションで、長方形を描画したいのですが、これを試しましたが、正確な描画方法がわかりません。助けてください。触れた箇所に長方形を描きたい。drawRect()メソッドでgetX()とgetY()を使用するにはどうすればよいですか?以下はコードです-

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);
                                 }
              }
4

1 に答える 1

0

onTouchメソッドで新しいオブジェクトをインスタンス化しないでくださいcanvas1 = new Canvas(...) 。フリーズや遅延が発生します。ビューの作成に長けているため、このキャンバスを1回作成してください。

注意してくださいあなたのdrawRect()呼び出しはあなたが必要とするものを描画しないと思います:あなたはx = 2.5 y = 2.5 width = 2.5 height=2.5で長方形を描画しています

私はあなたがタッチ位置に従ってあなたのrectを配置する必要があると思います:

//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);

于 2013-03-03T13:54:27.580 に答える