Главная страница
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.01 c
3-84932
cherepovets
2002-08-07 12:33
2002.08.26
DBGrid


14-85182
saxon
2002-07-26 14:54
2002.08.26
Задолбало!


1-85084
Skfi
2002-08-14 08:06
2002.08.26
Текстовый файл


1-85049
CashDi
2002-08-14 11:46
2002.08.26
Форматированные строки


1-85003
Explorer
2002-08-16 09:03
2002.08.26
FastReport: exception