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

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

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

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


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


Ответы (2)


arrow_upward
0
arrow_downward

Каждый раз, когда вы перемещаете палец, вызывайте функцию 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

arrow_upward
0
arrow_downward

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

person Bhagwad Jal Park    schedule 14.07.2012