обработка изображений в c # - PullRequest
0 голосов
/ 06 августа 2011

перед вопросом подумайте например о фотошопе.Когда вы рисуете прямоугольник на картинке. Вы можете переместить его.И когда вы двигаетесь, он работает очень быстро и не оставляет следов на картинке.
Итак, мой вопрос, как это сделать в приложении на c #?

Ответы [ 3 ]

3 голосов
/ 06 августа 2011

Когда вы перемещаете прямоугольник, Photoshop не помещает его в изображение, а затем рисует изображение, вместо этого изображение рисуется без прямоугольника, и прямоугольник рисуется поверх этого на экране. Таким образом, когда вы перемещаете прямоугольник, он может перерисовать часть изображения, которая ранее была покрыта прямоугольником, и нарисовать прямоугольник в новой позиции.

0 голосов
/ 06 августа 2011

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

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

В любом случае важно признать, что изображение документа - изображение, которое редактирует пользователь - не совпадает с изображением window , которое является просто копией быть переделанным всякий раз, когда это необходимо. В окне рисуется изображение документа, а затем поверх него рисуются выделенные области, контрольные отметки и другие подобные элементы управления.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...