Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2008, 19:52   #1
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
Вопрос Запрет обновления canvas

Здравствуйте!
Возможно ли как-нибудь временно запретить обновление canvas?
Ведь он обновляется после каждого езменения, если я не ошибаюсь, а когда требуется нарисовать большое количество объектов, это может занять много времени.
И вообще, какие существуют способы быстрого рисования?
Kn793 вне форума Ответить с цитированием
Старый 21.06.2008, 14:28   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Он не обновляется после каждого изменения. Он обновляется когда:
1. окно задвинуть за край а потом достать, обновиться форма и обновит все что на ней
2. Поверх окна провести другое окно.
И в первом и втором случае обновление частичное, восстанавливается только "поврежденная" часть.
3. Если ты сам вызовешь обновление. Рисование на канве этого не делает, при рисовании обновляется только то что ты рисуешь, целиком канва обновится только если нарисовать или выводить растр на всю ее поверхность.

Наоборот, часто при создании программ с графикой приходится принудительно обновлять канву, а ты хочешь запретить.

Ты игру делаешь? Тогда загляни в раздел "Создание игр", найдешь ответы на многие вопросы.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 21.06.2008, 15:12   #3
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
По умолчанию

Я к тому, что при выполнении например:
Код:
for x := 1 to Form1.Width do   for y := 1 to Form1.Height do Form1.Canvas.Pixels[x,y] := ClBlack;
Мы увидим постепенное закрашивание. А если как-нибудь отрисовать сначала в памяти, а потом вывести на экран, это разве не будет быстрее.
Kn793 вне форума Ответить с цитированием
Старый 21.06.2008, 17:15   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
это разве не будет быстрее
Будет, так и спрашивать надо было.

В разделе "Создание игр" эта тема обсуждалась многократно и подробно.
Смотри в первых двух прикрепленных темах.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка обновления... SanPol БД в Delphi 1 27.08.2008 11:43
Обновления WindowsXP bizpartner Софт 8 19.08.2008 18:47
Обновления в блоге Fainder О форуме и сайтах клуба 4 05.06.2008 19:31
как Windows после обновления глючит. Gauss Свободное общение 3 29.04.2008 23:25
КАК делать обновления к програме? ZhekON Общие вопросы Delphi 6 30.11.2007 21:30