![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как загрузить иконку нужного формата? [lazarus, Win CE]
DenisArd © (2008-12-14 23:49:00)Как из файла .ico, содержащего иконки нескольких форматов, загрузить иконку заданного размера и глубины цвета? Например 32-битную 48*48? С размером вроде понятно более-менее понятно, перед загрузкой задать свойство Size объекта типа TIcon и будет загружена наиболее близкая по размеру, а как быть с цветностью?
andreil (2008-12-23 12:06:00) [1]Далешь следующее:
procedure TIcon.LoadFromStream(Strm: PStream; W, H, bits: integer);
......
for I := 1 to IH.idCount do
begin
if Strm.Read( IDI, Sizeof( IDI ) ) <> Sizeof( IDI ) then Exit;
Inc( SumSz, IDI.dwBytesInRes + Sizeof( IDI ) );
D := IDI.bWidth - DesiredSize;
if D < 0 then D := -D;
{}
if (IDI.bWidth=W) and (IDI.bHeidht=H) and (IDI.bBitCount=bits) then
break;
{]
if D < FoundSz then
begin
FoundSz := D;
FoundIDI := IDI;
end;
end;
......
И все будет ОК ;)
andreil (2008-12-23 12:03:00) [2]Для этого лично я немного изменил файл KOL.pas, дописав там функции TIcon.LoadFromFIleEx и TIcon.LoadFromStreamEx, в которых и осуществлялась загрузка требуемой иконки. Завтра смогу дать готовый кусок файла.