![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблем с Preview и Undo [D7, WinXP]
X-Disa © (2005-03-02 12:48:00)Пишу грфический редактор (движок - модифицированный Graphics 32), есть проблемка. Как лучше организовать Preview, при работе с большими изображениями все хорошо кроме тормозв этого самого preview.
Делаю так:
MainImage.PaintTo(FPanelPreview.ImagePreview.Bitmap,R);
R - область предпросмотра с сохранением пропорций, MainImage - TImgView32.
И вторая пробелма - как реализовано undo например в фотошопе - как примерно это там работает ТАК быстро?
X-Disa (2005-03-04 11:08:00) [1]Попытаюсь. Пока надо доделать вставку текста и еще кое-чего обезглючить.
Fenik (2005-03-03 21:34:00) [2]Если подумать, тут можно море всего придумать..
Например, если изменилась всего одна точка изображения, запоминаем только координаты и старый цвет = 4+4+4 = 12 байт. :)
Или, при создании примитива, запоминать только координаты, тип и свойства.
Если изменилась часть рисунка, запоминать только её.
Короче, широкий простор для фантазии. Главное внимательно и логично построить алгоритм и не хранить избыточной информации в памяти.
Пусть в памяти постоянно текущее изображение и предыдущее (или его измененная часть). При вызове отмены быстро копируешь кусок старого рисунка на текущий, выводишь на экран, тем временем, в отдельном потоке готовя очередное предыдущее изображение путем рисования примитивов и измененных частей на первоначальном.
Ну, это так, общие расплывчатые мысли. Тебе предстоит это реализовать.. :)
X-Disa (2005-03-03 11:22:00) [3]В фотошопе наверно через filestream.
Мне хотя бы отмену изменений битмапа сделать, т.к. undo -самое узкое место.
dmk (2005-03-02 19:39:00) [4]Посмотри как у меня Preview реализовано.
http://dmk.interwave.ru/
А по поводу UNDO есть некоторые хитрости которые
с помощью Graphics32 не реализуешь.