Конференция "KOL" » Как загрузить иконку нужного формата? [lazarus, Win CE]
 
  • DenisArd (14.12.08 23:49) [0]
    Как из файла .ico, содержащего иконки нескольких форматов,  загрузить иконку заданного размера и глубины цвета? Например 32-битную 48*48? С размером вроде понятно более-менее понятно, перед загрузкой задать свойство Size объекта типа TIcon и будет загружена наиболее близкая по размеру, а как быть с цветностью?
  • andreil (23.12.08 12:03) [1]
    Для этого лично я немного изменил файл KOL.pas, дописав там функции TIcon.LoadFromFIleEx и TIcon.LoadFromStreamEx, в которых и осуществлялась загрузка требуемой иконки. Завтра смогу дать готовый кусок файла.
  • andreil (23.12.08 12:06) [2]
    Далешь следующее:
    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;

    ......


    И все будет ОК ;)
 
Конференция "KOL" » Как загрузить иконку нужного формата? [lazarus, Win CE]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]