Нарисуйте фигуру, которая отслеживает мой палец

Я знаю, как рисовать пути на холсте и понимаю, как отменить/повторить. Но теперь я хочу рисовать фигуры (линии, круги, прямоугольники), которые динамически изменяют размер в зависимости от того, как я их перетаскиваю — так же, как в MS Paint.

Если я использую «drawLine», линия остается там постоянно, и ее невозможно стереть и перерисовать в новое место для пальца. То же самое с кругом, так как я хочу, чтобы круг постоянно менял ширину, когда я перетаскиваю палец. Таким образом, старый должен быть стерт (сохранив все остальные пути на растровом изображении нетронутыми), а новый нарисован на его месте.

Много искал для этого, но не нашел, как это сделать. Может быть, я использую неправильные ключевые слова, но я не знаю. Любые указатели?


person Bhagwad Jal Park    schedule 12.07.2012    source источник


Ответы (2)


Каждый раз, когда вы перемещаете палец, вызывайте функцию invalidate() базового представления, она вызывает стирание всего фона.

public void invalidate () С: API уровня 1

Сделать недействительным весь вид. Если представление видимо, onDraw(android.graphics.Canvas) будет вызываться в какой-то момент в будущем. Это должно быть вызвано из потока пользовательского интерфейса. Чтобы вызвать из потока, отличного от пользовательского интерфейса, вызовите postInvalidate().

Затем перерисуйте фигуру в соответствии с новым положением пальца.

person sksEng    schedule 12.07.2012
comment
Я уже вызываю недействительность при рисовании других вещей. В режиме формы, если я вызову Canvas.drawRect, изменение станет постоянным. - person Bhagwad Jal Park; 13.07.2012

Удалось это сделать. Я неправильно понял, как работает закадровый рисунок. Идея состоит в том, чтобы записывать в растровое изображение только после того, как вы получите желаемую форму, т.е. при «подкраске». А пока нарисуйте фигуру, используя объект «холст» в Draw...

person Bhagwad Jal Park    schedule 14.07.2012