Вниз
Скачать: CL | DM;

Вопрос по созданию системы отмены действий.   Найти похожие ветки 

← →
Cr@sh ©   (2002-08-16 11:54) [0]

Ув. мастера, педложите пожалуйста свои варианты по созданию системы отмены действий.
Суть идеи в том, что имеется программа которая частино сама, частично с помощью человека строит графики и нужно чтобы при совершении ошибки(построил не ту прямую, штриховку и т.д.) пользователь смог отменить свое действие. Программа построена на основе Image`a.
Заранее спасибо.


← →
TTCustomDelphiMaster ©   (2002-08-16 16:12) [1]

Могу предложить два варианта реализации такой системы:
A. Нужно запоминать N предыдущих состояний картинки, что дает возможность отменить N операций. Недостаток такого способа - нужен большой объем памяти для хранения предыдущих состояний. Выход - запоминать не всю картинку, а только ту часть где были изменения.
B. Все действия пользователя заносить в список, по которому можно перейти к любому состоянию картинки путем последовательного выполнения этих действий. Допустим пользователь нарисовал 5 линий. Все эти действия занесли в список. При отмене последнего действия нужно нарисовать на исходной картинке 4 линии используя информацию занесенную в список. Недостаток этого способа - высокие затраты времени на повторение последовательности операций пользователя. Выход - выбрать оптимальное количество отмен, при этом исходное состояние картинки будет изменяться.


← →
Lord Warlock ©   (2002-08-16 16:17) [2]

Или делать наоборот. В программе ограниченное число граф. операций, для каждой можно написать "противодействие", операции с координатами запоминать, и по отмене вызывать противодействие.

У меня в программе была похожая вещь, но там использовалась система классов и массивы для хранения примитивов.


← →
TTCustomDelphiMaster ©   (2002-08-16 16:42) [3]

Lord Warlock © (16.08.02 16:17)
Такой способ подходит для редактора векторной графики, а тут мы имеем дело с TImage т.е. растровая графика. Если вы на bitmap нарисуете черный квадрат какое противодействие нужно чтобы востановить изображение? :)


← →
Lord Warlock ©   (2002-08-16 16:43) [4]


> . Если вы на bitmap нарисуете черный квадрат какое противодействие
> нужно чтобы востановить изображение?


Нарисовать свехру квадрат цвета фона :)


← →
TTCustomDelphiMaster ©   (2002-08-16 17:18) [5]

Lord Warlock © (16.08.02 16:43)
И я про тоже см. TTCustomDelphiMaster © (16.08.02 16:12) вариант A.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
3-84916
Виталий Панасенко
2002-08-06 17:45
2002.08.26
Как победить исключение


14-85204
Skyle
2002-07-31 09:04
2002.08.26
Сервисы NT


1-84986
ЮРИЙ_К
2002-08-15 13:24
2002.08.26
Событие RxDBGrid3DrawColumnCell - ВЕШАЕТ комп 8-(


14-85168
quark
2002-07-28 21:42
2002.08.26
Adept Union Все для программиста (более 60 мб инфы)


14-85237
Вутшы
2002-08-01 14:14
2002.08.26
Как выключить компьютер?




   Наверх