![]() |
|
![]() ![]() ![]() |
|
SERG555 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Есть рисунок, пока я рисую мне нужны Undo, Redo. Рисую пером соответственно на экране с помощью LineTo и MoveTo в Picture Control, а записываю в файл с помощью СvLine. В общем как реализовать обратный шаг, 2 шага, 3 шага и назад. Undo должен же "затирать" в Picture Control и в рисунке img.
1 СvLine используется у меня при движении пера на событие HCT_EVT_PENMOVE:
ну допустим я буду исходя из cvpoint.x/y исходить при сохранение изображения, а не на событие HCT_EVT_PENMOVE заполнять... То есть сохранение делать не в динамике. 2 А что делать мне с тем то что в динамике я пишу пером и нажимаю Undo я если честно так и не понял как это реализовать ((( Как в PictureCOntrol реализовать Undo ? Фактически у меня же получается юзаются тока 2 цвета: синий(ручка) и белый(фон). Поэтому я думаю что просто от момента HCT_EVT_PENMOVE до HCT_EVT_PENDOWN зарисовывать цветом фона эти все линии. Как считаете ?
Есть ли что-нить готовое в C++ или надо писать руками, то помогите пожалуйста тогда с алгоритмом. |
||||
|
|||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Нет ничего готового.
Для UNDO-REDO удобнее завести отдельный буфер, а не пытаться использовать записи в документ. Это неудобно, а кроме того, для хорошщей реализации UNDO-REDO могут потребоваться дополнительные параметры. Буфер UNDO реализуется как 2 стека (отдельно для элементов UNDO и REDO). Идея в том, чтобы UNDO и REDO-операции были "автоматическими". Т.е. каждый элемент буфера умел сам выполнять свой откат (элементы могут быть разными). Примерно так: создаем новый элемент на экране, записываем его в документ и одновременно создаем соответствующий элемент в UNDO-буфер. При выполнении UNDO достаем из буфера верхний элемент, выполняем ему откат, который автоматически должен создать элемент для REDO и положить в буфер. И т.д. Реализация элементов буфера могла бы вполне ссылаться на содержимое документа, но удобнее держать копию (или использовать умные указатели с подсчетом ссылок. Это просто идея. Дальше думай сам. -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |