2017-01-12 3 views
1

Я использовал приведенный ниже код, чтобы нарисовать прямоугольник на холсте, когда пользователь коснулся экрана, где первые координаты, где пользователь сначала касается экрана, он работал.Рисование более одного прямоугольника на холсте, когда пользователь перемещает палец на экране

проблема: я могу нарисовать только один прямоугольник, когда я хочу нарисовать второй, первый исчезает (я хочу рисовать столько, сколько хочу).

вторая проблема: как рисовать треугольник и круг используя тот же метод?

код:

//In a custom view class 
int mStartX; 
int mStartY; 
int mEndX; 
int mEndY; 

Paint paint = new Paint(); 

//I did constructor and everything......... 

//Drawing the rectangle in on draw 
@Override 
protected void onDraw(Canvas canvas) { 

super.onDraw(canvas); 

canvas.drawRect(mStartX, mStartY, mEndX, mEndY, paint); 
} 


//updating the coordinate variables on touch 

@Override 
public boolean onTouchEvent(MotionEvent event) { 

switch (event.getActionMasked()) { 

    case MotionEvent.ACTION_DOWN: 

     mStartX = (int) event.getX(); 
     mStartY = (int) event.getY(); 

     break; 

    case MotionEvent.ACTION_MOVE: 

     mEndX = (int) event.getX(); 
     mEndY = (int) event.getY(); 

     invalidate(); 

     break; 

    case MotionEvent.ACTION_UP: 


     mEndX = (int) event.getX(); 
     mEndY = (int) event.getY(); 

     invalidate(); 

     break; 

    default: 

     return false; 

     break; 
} 

return true; 
} 

ответ

0

, когда я хочу, чтобы нарисовать второй первый исчезает

только потому, что вы вызываете команду Invalidate().

Вы можете создать объект рисования (спрайт) и сохранить координаты для рисования в себя, а затем нарисовать эту коллекцию объектов, когда onDraw (холст холста) вызывает после invalidate().

вторая проблема: как рисовать треугольник и круг используя тот же метод?

this чтения, чтобы найти необходимые команды

Смежные вопросы