Форум: "Прочее";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
ВнизРесурсы GDI Найти похожие ветки
← →
Ви (2006-04-28 06:47) [40]Удалено модератором
← →
Юрий Зотов © (2006-04-28 07:20) [41]Иногда встречаются люди, которые искренне считают, что если они не видели носорога, то его и не существует. Даже и теоретически.
А все рассказы о нем - брехня. И рисунки - тоже брехня. Просто художник рисовать не умеет, про освобождение контекста даже и не слышал никогда, вот ему глюки и привиделись.
← →
КаПиБаРа © (2006-04-28 07:58) [42]Если ресурсов не хватает, то не надо их использовать!
← →
Котик Б (2006-04-28 10:18) [43]> Юрий Зотов © (28.04.06 07:20) [41]
> Иногда встречаются люди, которые ...
хммм... к чему бы это ???
Поскольку автор вопроса так и не озвучил конкретные потребности своей супер навороченной системы (ни одной цифирки !!!), то я набрался наглости и провел у себя маленький тестик:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
dc: THandle;
hbmp: array of THandle;
begin
SetLength(hbmp, MaxInt div $FF);
dc := GetWindowDC(self.Handle);
if dc <> 0
then try
for i := Low(hbmp) to High(hbmp) do begin
hbmp[i] := CreateCompatibleBitmap(dc, 0 + (i mod 2), 0 + (i mod 2));
Label1.Caption := IntToStr(i);
Label1.Update();
Application.ProcessMessages();
if hbmp[i] = 0
then break;
end;
for i := Low(hbmp) to High(hbmp) do begin
DeleteObject(hbmp[i]);
if hbmp[i] = 0
then break;
end;
ShowMessage(Label1.Caption);
finally
ReleaseDC(self.Handle, dc);
end;
SetLength(hbmp, 0);
end;
и получил такие результаты:
Win98: 2463
Win2kP: 28285
Win2kS: 30117
как и ожидалось в Win98 получили мизерный результат - но всё равно для условия заданного в
>Германн © (28.04.06 02:18) [8]
>Причём для каждого этажа количество отображений - не ограничено.
>Количество и степень пересечений разных планов - тоже не ограничено
будет маловато и 28 тыщ :(
При этом любая современная игрушка спокойно может отображать до 100 000 полигонов в кадре.
Поэтому я полностью согласен с Ви(без копирайта) по поводу использования других API и мне стыдно за товарища Германн © позволяющего себе в его возрасте такие высказывания вроде "Когда сталкнёшься, узнаешь!"...
DIXI
← →
wicked © (2006-04-28 11:22) [44]
> При этом любая современная игрушка спокойно может отображать
> до 100 000 полигонов в кадре.
> Поэтому я полностью согласен с Ви(без копирайта) по поводу
> использования других API и мне стыдно за товарища Германн
> © позволяющего себе в его возрасте такие высказывания вроде
> "Когда сталкнёшься, узнаешь!"...
как же здесь любят путать теплое с мягким, просто диву даюсь.... и тыкать непонятно чем, показывая свою крутость....
------------------ кут хере ------------------
по теме - ув. Германн, возможно я плохо читал ветку, но озвучьте, пожалста, как сейчас происходит (или планируется) отображение этих битмап.... тогда можно будет и думать.....
из простого, как бы я делал - хранить "сырые" битмапы в памяти (bmp-файлы) и отображать их с помощью StretchDIBits.... это я делал и оно работает, нужно просто передавать в функцию два указателя, а она уже сама отобразит и сконвертирует различные форматы пикселей.... при этом из ресурсов тратится только память, а у GDI берется только контекст устройства и хендл на 1 - 2 битмапы для кеширования..... то есть, мы экономим на ресурсах GDI за счет небольшого снижения быстродействия....
ежели охота и позволяет время, можно побаловаться с функциями из раздела "Bitmap functions", которые в названии имеют DIB - часть из них - именно то, что нужно в таком случае......
← →
wicked © (2006-04-28 11:23) [45]добавлю, что, возможно, в GDI+ с этими вещами будет проще, но тут я не могу ничего сказать.... а вот Джо попытать на эту тему надо..... :)
← →
Альф (2006-04-28 12:03) [46]Удалено модератором
Примечание: Правила читаем и уважаем
← →
antonn © (2006-04-28 12:50) [47]Германн © (28.04.06 2:18) [8]
+ с этими вещами будет проще, но тут я не могу ничего сказать.... а вот Джо попытать на эту тему надо..... :)
хм... мне показалось, или там говорилось об VCL, где каждый датчик - что то типа TImage?
Ну допустим должен отображаться план этажа, сотни полторы датчиков. Ну, допустим, план составляется из нескольких битмапов. Итого, нужен буферный битмап, который будет представлять собой выводимую картинку, нужен минимум один "tmp" битмап для картинки датчика, и еще один битмап-маска, по размеру равный буферному.
Итак, очищается буферный битмап(и на него копируются части плана - ну 1-2 дополнительных битмапа, которые потом умирают) и маска, на них, по очереди копируются картинки-датчики (для этого используются "tmp" битмап - в него грузим с диска(или "байтового" массива в памяти) и выводим). Буферный битмап (или часть его) отображается пользователю. Маска используется для кликов по датчикам (даже через canvas.pixels[] хватит, координаты клика-то можно определить?), а при рисовании датчика на маску можно использовать цвет, равный номеру в массиве(или индекс в базе, да мало ли...). При клике номер датчика = canvas.pixels[]. Сколько там у TColor может быть вариантов? Думаю на датчики хватит:)
Я, вообще, правильно понял мысль? с таким подходом и на Win98 работать будет, и не в одном экземпляере. Если битмапов и много, их можно хранить в вариантах TStream - TMemoryStream будет кушать память, но за то из памяти и читать... но зачем их сразу все создавать?
← →
Sapersky (2006-04-28 13:16) [48]хранить "сырые" битмапы в памяти (bmp-файлы) и отображать их с помощью StretchDIBits.... это я делал и оно работает, нужно просто передавать в функцию два указателя
А если не хочется вручную возиться со StretchDIBits/указателями - можно использовать TFastDIB с UseGDI = False.
http://prdownloads.sourceforge.net/skinner/FastLib.zip?download
← →
Джо © (2006-04-28 13:22) [49]> [46] Альф (28.04.06 12:03)
> Що до GDI+, то дуже сумнiвне використання його на Win98
> - дуже багато прив"язано до NT-подiбних систем.
GDI+ отлично работает на 98.
← →
Юрий Зотов © (2006-04-28 14:31) [50]> Котик Б (28.04.06 10:18) [43]
> хммм... к чему бы это ???
К тому, что Вы сами своими тестами и подтвердили - носороги таки существуют, даже если некто с ними еще не сталкивался (см. [13]).
А раз они существуют, то считаться с ними приходится. Каким способом - это уже второй вопрос. Может, логику программу перекроить. Может, другой API использовать. Может, еще что. От многих факторов зависит (например, от сроков, от имеющихся сил, от потребителя, от способа дистрибьюции, от перспектив и т.д.). На месте виднее.
Но в чем можно не сомневаться - так это в том, что о необходимости освобождения ресурсов автор сабжа где-то когда-то слышал. Причем далеко не один раз. Так что вряд ли стоило столь назидательно, с издевочкой, объяснять ему эту самую необходимость.
← →
Котик Б (2006-04-28 16:21) [51]>Юрий Зотов © (28.04.06 14:31) [50]
>К тому, что Вы сами ...
Понял :) вопросов больше не имею :)
Но чего хотел добиться от автора - так это реальных требований к кол-ву выделяемых ресурсов, что-то отличное от "не ограничено".
А также хотел показать то что разница в кол-ве GDI handles не такая уж и большая...
← →
han_malign © (2006-04-28 17:11) [52]Delphi Help:
Dormant method (TBitmap)
----------------------------------------------
Creates a memory bitmap image in order to release the bitmap handle, forcing the image into DIB format to save resources.
sapienti sat
← →
Ви (2006-04-28 21:13) [53]Удалено модератором
Примечание: Отдохни от форума недельку
← →
Германн © (2006-04-29 02:34) [54]Даже не ожидал, что мой весьма отвлечённый вопрос вызовет столь бурное обсуждение.
Спасибо всем. Получил массу информации. Сохранил её. Может пригодится когда-нибудь.
К сожалению, самые грамотные советы, мне полезны только теоретически. :(
Поскольку ведут к весьма существенной и времятрудоёмкой переработке программы. А оплатить эту переработку клиент, скорее всего не захочет.
← →
Ви+ (2006-04-29 04:47) [55]>>Удалено модератором
>>Примечание: Отдохни от форума недельку
Модератор жжош, я тут бываю раз в месяц и то случайно
Аффтар выпий яду, да побольше и иди лучше картошку капай, такого ламеризма я еще не видел.
← →
Ви+ (2006-04-29 04:50) [56]Юрий Зотов © (28.04.06 07:20) [41]
Народ, знай что аффтор сабжа показал свою некомпетентность и пытался скрыть сей постыдный факт. )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) Я заклеймил его пазором гыыыыыыыыыыыыыыы
← →
Ви+ (2006-04-29 04:52) [57]ЗЫ: про Юрий Зотов по запарке, наверное чет ему хотел написать. А пост адресуется аффтору сабжа.
← →
homm © (2006-04-29 05:57) [58]
> [55] Ви+ (29.04.06 04:47)
На рекорд батенька идете. Помоему около четырех правил нарушено :)
1) оскорбил другово участника форума
2) "обсудил" действия модератора
3) написал сообщение не по теме оффтоп
4) справоцировал другого участника на оффтоп (меня :) )
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.014 c