Один из способов сделать это - сохранить нетронутую, без аннотации копию вашего основного фонового изображения и сохранить список аннотаций (это то, что я называю квадратами, которые вы упоминаете), например:
- квадрат, черный, 10, 10, 20, 20
- квадрат, красный, 100,110, 200,210
- круг, зеленый, 50,50, 25
- прямоугольник, синий, 30,30, 40,300
Затем каждый раз, когда вы перерисовываете экран, делайте копию фонового изображения и просматривайте список аннотаций, каждый из которых рисует.
Когда придет время удалить, просмотрите список и удалите запись с ближайшим центром, а затем заново раскрасьте экран.
Вы можете объединить этот подход с предложением @ Mika72 в комментариях.Таким образом, у вас будет исходное, чистое изображение и отдельное изображение для ваших наложений, которое будет того же размера и будет выглядеть как пустой чисто прозрачный холст.Нарисуйте свои аннотации (квадраты и прямоугольники) на этом слое, когда пользователь щелкает, и каждый раз, когда вы перекрашиваете экран, комбинируйте слой аннотаций с исходным изображением.Теперь вам нужно только перебрать список аннотаций и перерисовать их, когда они будут удалены, поэтому перекраска будет выполняться быстрее.
Другой вариант - "резиновые полосы" нарисовав XOR, смотрите ответ здесь .