Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
4-85297
Polevi
2002-06-22 21:03
2002.08.26
почему не работает сие ?


1-84987
Explorer
2002-08-15 12:41
2002.08.26
Подскажите, где я ошибся?


3-84898
ZG
2002-08-06 14:19
2002.08.26
SQL и у меня не получается в Дельфи создать таблицу


1-85073
Stas Ant
2002-08-14 07:00
2002.08.26
Виртуальный винт


3-84919
BlankAlex
2002-08-06 16:35
2002.08.26
D6 & TIBStoredrProc & TIBSQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский