Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.17;
Скачать: CL | DM;

Вниз

Увеличение быстродействия прорисовки компонентов   Найти похожие ветки 

 
Vint45   (2003-07-03 11:53) [0]

Добрый день! Я создаю программным путем на форме большое количество визуальных компонентов, порядка 1000. Причем делаю это на этапе создания формы. Изначально я создавал их в событии OnShow, т.к. надо было получить параметры самой формы. Прорисовка и создание элементов при этом составляла несколько секунд. Когда же я переместил создание элементов в событие OnCreate, прорисовка стала почти моментальной. Я так понимаю, что это связано с групповой прорисовкой компонентов, а не поэлементной. Теперь мне требуется, чтобы элементы создавались во время выполнения програмы. Вопрос, есть ли функции приостановки прорисовки компонентов, чтобы чтобы после их создания сделать групповую прорисовку?


 
MBo ©   (2003-07-03 11:57) [1]

Положить их, скажем, на панель, и делать ее visible


 
Vint45   (2003-07-03 12:09) [2]

ага, прокатывает. Только они у меня уже на панели расположены, и при этом она мигает, видимо надо еще одну панель вложеную сделать без бордюров и на ней прорисовывать.


 
MBo ©   (2003-07-03 12:11) [3]

А какой маньяк будет столько контролов рассматривать? :)


 
Vint45   (2003-07-03 12:18) [4]

это спидбатоны :). Я их использую при отображении результов алгоритма расчета, раскрашиваю их как надо. Попробовал сначала TRichText, но с ним не совсем удобно работать, вот и перешел на спидбатоны :)


 
MBo ©   (2003-07-03 12:19) [5]

??? Так для отображения надо же единственную картинку формировать


 
Vint45   (2003-07-03 12:34) [6]

Можно, конечно. Но недостатком будет, невозможность на ней отредактировать данные, спидбатоны это позволяют это сделать.
Немного поясню:
1. Сначала для отрезка из 1000 элементов генерю случайным образом значения типа есть элемент и нет элемента.
2. запускаю алгоритм расчета, который находит находит диапазоны элементов, типа экстремумов.
3. раскрашию найденные диапазоны(спидбатоны) в соответствующие цвета.
4. анализию результаты :)
5. если что-то не устраивает в распределении элементов, то нажимая на спидбатон, делаю его элементом, или наоборот не делаю.
И заново запускаю расчет уже с учетом перераспределенных элемнетов.
Схема примерно такова.


 
MBo ©   (2003-07-03 12:41) [7]

Это, ИМХО, неразумно.
Что мешает отловить клик по картинке - координаты-то известны будут.


 
NickBat ©   (2003-07-03 12:43) [8]

Почему бы все это не нарисовать на TCanvas?


 
Vint45   (2003-07-03 12:45) [9]

реализуется сложнее. Как потом картинку отрисовывать? Ведь она изменится.


 
Sandman25 ©   (2003-07-03 12:51) [10]

Vint45 (03.07.03 12:45)

Сделать массив of boolean, и рисовать себе картинку по этим данным.


 
ЮЮ ©   (2003-07-03 12:52) [11]

Тогда на DrawGride


 
MBo ©   (2003-07-03 12:56) [12]

Vint45
Изменится- перерисуешь всю или только измененный прямоугольник


 
Calm ©   (2003-07-03 12:59) [13]

Я нечто похожее делал на StringGrid"е и по координатам мышки определял чего делать при клике.
На самом деле, вовсе не сложно.


 
Vint45   (2003-07-03 13:37) [14]

Дело в том, что у меня все уже реализовано, и менять что-то если все работатает, не хочется. Притом с канвасом я уже давно не работал и порядком его подзабыл. Но я учту ваши замечания на будующее, спасибо :)



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.02 c
1-55539
Sheng
2003-07-02 23:20
2003.07.17
Реестр


14-55834
PlaTinum
2003-07-01 20:16
2003.07.17
Raport


1-55537
Maxim Pshevlotsky
2003-07-05 15:04
2003.07.17
Как узнать названия всех файлов в каталоге


3-55409
Relaxxx
2003-06-23 16:29
2003.07.17
MultiSelect в DBGrid


14-55842
A0th
2003-06-27 23:30
2003.07.17
Антивирус