| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Графический редактор |
| Автор: _andrews_ 23.12.2006, 23:16 |
| Есть обычный графический редактор, рисующий ЛИНИЮ, ЭЛЛИПС, КВАДРАТ, и КРИВУЮ. При прорисовке, например линии, необходимо, чтобы она прорисовывалась "резиново", т.е. выбрали инструмент ЛИНИЯ, клацнули мышкой на поле рисования и потянули ей по окошку... Линия - хлоп! - и за мышкой потянулась, из стороны в сторону, из стороны в сторону, при этом зарисовывая те линии, которые нарисовались в процессе "скольжения" за мышкой. Сейчас же происходит такая ситуация, что ВСЕ эти линии остаются на рисунке..получается красивый веер, но он не в тему...хотя, повторюсь-получаются замысловатые такие фигурки. Подскажите, как зарисовать все линии, и оставить только ту, которая останется при отпускании кнопки мышки? |
| Автор: Anikmar 24.12.2006, 00:15 |
| При прорисовке линии использовать XOR Нарисовали 1 раз Потом с теми же координатами 2-й раз (линия стерлась, фон восстановился) Передвинули координаты Нарисовали и так далее Когда пользователь подтверждает координуту - уже рисуем тем цветом, что надо |
| Автор: WERITAS 24.12.2006, 00:18 | ||||
| У тебя окно не очищается, отсюда и веер. Юзай Invalidate(hwnd,NULL,TRUE) где нужно. Но для "красивой" прорисовки линии этого мало. Когда потянешь за линию, она будет неприятно "мелькать" на экране. Чтобы этого не было надо сделать двойную буферизацию. В СиШарпе и Дельфи это делается одной строчкой P.S.
Должно быть нечто вроде этого:
|