Я думаю, вы спрашиваете о выделении прямоугольников (или других временных фигур) поверх изображения документа. Этот эффект иногда называют «резиновой полосой», особенно при рисовании линии от одной точки к другой (она растягивается как резиновая полоса).
Традиционно это делалось с использованием рисования XOR - вместо перезаписи изображения с помощью формы выделения цвета в этой области инвертировались. Затем, чтобы удалить выделение, достаточно снова инвертировать цвета, вернувшись к тому же исходному изображению. Сегодня рендеринг графики достаточно быстр, поэтому такие трюки обычно не нужны; достаточно просто перекрасить эту часть окна (без прямоугольника).
В любом случае важно признать, что изображение документа - изображение, которое редактирует пользователь - не совпадает с изображением window , которое является просто копией быть переделанным всякий раз, когда это необходимо. В окне рисуется изображение документа, а затем поверх него рисуются выделенные области, контрольные отметки и другие подобные элементы управления.
Я не знаком со средствами графического интерфейса C # (и я понимаю, что вы можете использовать более одной структуры GUI), но, вероятно, он имеет обычную структуру размещения множества «виджетов», «представлений» или «элементов управления». «в окне (возможно, вложенные друг в друга). Вы можете сделать простое поле выбора - хотя и не оптимально эффективное - просто поместив прямоугольный виджет соответствующего размера (со сплошной рамкой и прозрачным фоном) поверх виджета изображения. Это позволяет вашей графической среде позаботиться о соответствующем перерисовке и, вероятно, является хорошим дешевым способом начать.