-
Как из файла .ico, содержащего иконки нескольких форматов, загрузить иконку заданного размера и глубины цвета? Например 32-битную 48*48? С размером вроде понятно более-менее понятно, перед загрузкой задать свойство Size объекта типа TIcon и будет загружена наиболее близкая по размеру, а как быть с цветностью?
-
Для этого лично я немного изменил файл KOL.pas, дописав там функции TIcon.LoadFromFIleEx и TIcon.LoadFromStreamEx, в которых и осуществлялась загрузка требуемой иконки. Завтра смогу дать готовый кусок файла.
-
Далешь следующее: 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;
...... И все будет ОК ;)
|