#android #graphics #line #android-canvas #draw
#Android #графика #строка #android-холст #рисовать
Вопрос:
Сейчас я решаю одну головоломку. хотите сопоставить правильную пару с помощью точек. предположим, что если мы подключим пару несоответствий, она захочет показать предупреждение, а также автоматически удалить эти нарисованные линии. Теперь все функции завершены, за исключением одной вещи. я не имею ни малейшего представления об удалении нарисованной линии (автоматически).
Возможно ли это в Android? Есть ли какой-либо доступный метод для удаления нарисованной линии.
Ответ №1:
Вы рисуете линии с помощью Canvas.drawLine
? В api нет такого понятия, как «удалить нарисованную линию».
Я могу представить пару вариантов:
- Снова нарисуйте ту же линию, используя цвет фона, чтобы «стереть ее»
- Снова нарисуйте весь экран, но на этот раз без рисования линий
Комментарии:
1. привет, спасибо за твой ответ. если цвет фона такой же, значит, все в порядке. но моя фоновая тема содержит другой цвет. В этом я не могу нарисовать ту же линию, используя цвет фона. Есть ли другой вариант?
2. @Mobila заново нарисуйте весь экран заново. возможно, вам потребуется взглянуть на то, как реализовать двойную буферизацию, хотя в Интернете есть много статей об этом
Ответ №2:
Как упоминалось выше, нет способа удалить нарисованную линию. Однако вы можете сделать следующее: 1) Сделайте копию исходного изображения (исходное изображение = img1; дубликат = img2), используя Bitmap.copy. Скопируйте ее в конфигурацию.ARGB_8888, который делает ее изменяемой. 2) Нарисуйте линии на вновь созданном изображении с помощью canvas.DrawLine () 3) Если вы хотите вернуться к своему старому изображению без линий, отобразите img1 и переработайте img2.
Однако это работает только в том случае, если ваше изображение не занимает много оперативной памяти, и в этом случае идеальным вариантом будет, если вы делаете все на том же изображении и загружаете новую копию, когда хотите выполнить откат.