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

Вниз

Количество TImage   Найти похожие ветки 

 
Германн ©   (2004-12-25 04:05) [0]

Если кто, что, знает. Есть ли какие-то ограничения в Win9x насчет количества созданных в Дэлфи компонент TImage?

Столкнулся тут давеча с тем, что в WinXP программа нормально создает ~500 компонент TImage, а в Win98 - все рушится намертво!


 
Германн ©   (2004-12-25 04:07) [1]

Ёшкин кот! Хотел запостить в "Основную", а получилось в "Потрепаться" :(((


 
Чеширский_Кот ©   (2004-12-25 06:45) [2]

привычка?


 
Fenik   (2004-12-25 15:15) [3]

500 Timage? Вы извращенец?


 
Чеширский_Кот ©   (2004-12-25 15:20) [4]

имеет на то полное право!


 
uny ©   (2004-12-25 16:12) [5]

раньше по количеству tmediaplayer пробовал - бросаешь на форму пока дельфи не кончится. около 30 с чем то получалось. у одноклассника больше, потом он доводы приводил что это не показатель крутости компа...
короче накидывать, пока не кончится))


 
DrPass ©   (2004-12-25 16:18) [6]


> Если кто, что, знает. Есть ли какие-то ограничения в Win9x
> насчет количества созданных в Дэлфи компонент TImage?

Есть. В первую очередь - количеством доступных дескрипторов GDI, во вторую - доступным объемом памяти


 
Германн ©   (2004-12-27 01:10) [7]

2 DrPass ©   (25.12.04 16:18) [6]
По возможности насчет "количества доступных дескрипторов GDI" поподробнее пожалуйста. (Объем памяти дело третье, поскольку речь шла в сабже оь одном и том же компе).

2Fenik   (25.12.04 15:15) [3]
>500 Timage? Вы извращенец?

Пока до сих пор не замечал за собой такое. :)
А суть дела такова - В моей основной программе пользователь должен иметь возможность видеть картинку, которая графически изображает некий объект(устройство), на котором изображены некие датчики. Состояние их в данный момент отображается цветом их фона. Кроме того, при желании пользователя, рядом с ними отображается некий текст, характеризующий параметры данного датчика. При этом месторасположение датчиков (как и их графический вид) определяется самим пользователем.
В основной программе мне достаточно считать из базы данных координаты пиктограммы и ее файл и скопировать битмап пиктограммы в битмап картинки объекта. Но вот в программе, в которой пользователь "размещает" датчики по битмапу объекта, мне нужно чтобы пользователь видел, какие "пиктограммы датчиков" в данный момент выделены, в зависимости от параметров. И иметь возможность задействовать OnMouseDown/OnMouseUp. Поэтому я и использую для каждого из них TImage.
Кто хочет - бросьте в меня камень, с указанием почему я не прав.


 
DrPass ©   (2004-12-27 01:20) [8]


> По возможности насчет "количества доступных дескрипторов
> GDI" поподробнее пожалуйста

Каждый элемент интерфейса в Windows, будь-то кнопка или битмап требует дескриптор. Или несколько дескрипторов - это может быть как хендл окна или битмапа, так и контекст для рисования на канве. Их в Win9x было не так уж много - 8 тыс GDI и столько же user, насколько я помню. Я не знаю, сколько дескрипторов жрет одна TImage, но подозреваю, что больше одного, ведь она держит в себе код для обработки изображений разных форматов. Если даже 4 - то 500 TImage скушают половину всех доступных. А ведь есть еще другие приложения и сама Windows.
Распознать окончание доступных дескрипторов легко - если сперва появляются такие глюки, как пропадание пиктограмм на кнопках в свежеоткрываемых окнах, например, при открывании Проводника. Еще более верный способ - установить стандартную утилиту Win9x "Индикатор системных ресурсов" и любоваться ею при работе твоего приложения


 
Германн ©   (2004-12-27 01:36) [9]

2 DrPass ©   (27.12.04 01:20) [8]
Спасибо! Меня интересовало конкретно число. "8 тыс" - теперь моя метка контроля.
Ну а распознал я это сразу! И пиктограммы в IDE пропадали и меню Windows пропадало и еще много что "пропадало"!


 
kaif ©   (2004-12-27 11:06) [10]

Я сталкивался с ограничениями на количество картинок в TImageList в 98-ом. Свыше 500 картинок начинались проблемы.


 
DiamondShark ©   (2004-12-27 11:59) [11]


> Кто хочет - бросьте в меня камень, с указанием почему я
> не прав.

Рисовать на экране один битмап, а хранить только координаты и состояние того, что там выделено/нажато/включено.

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

И никаких 500 битмапов.


 
wicked ©   (2004-12-27 12:44) [12]

в добавок к DiamondShark ©   (27.12.04 11:59) [11]:
можно вообще обойтись без битмапа - сохранить изображение в TMemoryStream и использовать для прорисовки кусков ф-цию StretchDIBits...


 
Германн ©   (2004-12-28 00:12) [13]

Спасибо всем ответившим. Приму к сведению все полученные советы. Как сейчас, так и на будущее.



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

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

Наверх




Память: 0.5 MB
Время: 0.066 c
1-1104369181
TButton
2004-12-30 04:13
2005.01.16
onHelp


6-1098782553
Arkady
2004-10-26 13:22
2005.01.16
Отправка письма


11-1085626346
hammer
2004-05-27 06:52
2005.01.16
Как выключить, перезагрузить ПК прогой на kol


14-1104061294
syte_ser78
2004-12-26 14:41
2005.01.16
Похмелье


1-1104709238
Дурдом
2005-01-03 02:40
2005.01.16
Как изменть значение указателя?