Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.26;
Скачать: 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 вся ветка

Текущий архив: 2002.08.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
7-85266
Alex-A
2002-06-14 10:30
2002.08.26
Как узнать размер папки?


1-84951
dmtr
2002-08-15 11:25
2002.08.26
Программное создание формы


3-84925
Igel
2002-08-06 13:42
2002.08.26
Почему DBGrid возвращает событие на изменение...


6-85155
ILAR
2002-06-15 19:22
2002.08.26
МОДЕМ


14-85214
Thor
2002-07-29 15:45
2002.08.26
DirectX для Delphi