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

Вниз

Расплывчатые иконки, и как с ними бороться.   Найти похожие ветки 

 
AlexanderMS ©   (2006-10-23 19:59) [0]

Скажите, пожалуйста, почему при использовании иконок, содержащих в себе несколько изображений разного размера, в некоторых случаях прорисовываются изображения не того размера?

В моей программе есть одна иконка. В ней - несколько изображений (32x32, 16x16 и т. д.) Эта иконка есть в заголовке окна (я её указал в свойствах проекта). Она выглядит чётко (в заголовке окна иконки 16x16). В системный трей помещается эта же иконка. В трее иконки 16x16. Но иконка моей программы в трее выглядит как сжатая 32x32 и, как следствие, - она расплывчатая.

Почему в трее отображается именно иконка 32x32, хотя в комплекте есть и иконка 16x16? Это притом, что Handle иконки, отображающейся в трее равен Application.Icon.Handle.


 
Agent13 ©   (2006-10-23 22:31) [1]

Сталкивался когда-то с подобным глюком. Глубокого философского смысла в таком поведении иконок не нашёл, но топорным способом проблема решается элементарно: изображение 16х16 выносится в отдельную иконку, которая и помещается в трей :)


 
guav ©   (2006-10-23 23:03) [2]

Можно загружать LoadImage и явно указать какой размер нужен.
"в трее" - это на кнопке на панели задач или "там ге часики" ?
С первым глюков не наблюдалось, со вторым - LoadImage(hInstance, "MAINICON", IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); спасёт.


 
AlexanderMS ©   (2006-10-24 14:40) [3]

Большое спасибо! В трее (где часики) отображается то, что нужно!

Последнее:

как из файла "вытащить" иконку и добавить её в ImageList, но чтобы там оказалось изображение 16x16?

У меня так:

             Icon := ExtractAssociatedIcon(hInstance,
               PChar(LBActions[n].LBIconLocation), LBActions[n].LBIconIndex);

             if Icon <> 0
               then
                 begin
                   ListIcon := TIcon.Create;
                   try
                     ListIcon.Handle := Icon;
                     ImageIndex := LBImageList.AddIcon(ListIcon)
                   finally
                     ListIcon.Free;
                   end
                 end;


Этот ImageList содержит иконки, которые потом отображаются на кнопках ToolBar... расплывчато. :( Снова программа глупо сжимает картинки 32x32 до 16x16.


 
guav ©   (2006-10-24 15:19) [4]

SHGetFileInfo


 
DVM ©   (2006-10-25 10:23) [5]


> изображение 16х16 выносится в отдельную иконку, которая
> и помещается в трей :)

Кстати насчет иконок в области уведомлений: в win2000 там только 16-цветные вроде как только.


 
Ketmar ©   (2006-10-25 11:08) [6]

>[5] DVM(c) 25-Oct-2006, 10:23
>Кстати насчет иконок в области уведомлений: в win2000 там
>только 16-цветные вроде как только.
не могу точно утверждать, ибо shell не explorer, но начиная с SP4 -- не только.
могу ошибиться.


 
Gero ©   (2006-10-25 15:38) [7]

> [5] DVM ©   (25.10.06 10:23)


> в win2000 там только 16-цветные вроде как только.

256 тоже можно.


 
#0FFFF   (2006-10-25 20:13) [8]


> AlexanderMS ©   (24.10.06 14:40) [3]
> как из файла "вытащить" иконку и добавить её в ImageList,
>  но чтобы там оказалось изображение 16x16?


uses
  ShellAPI, ShlObj

function GetIcon(const FileName: string): TIcon;
var
 FileInfo: TShFileInfo;
 ImageList: TImageList;
begin
 Result := TIcon.Create;
 ImageList := TImageList.Create(nil);
 FillChar(FileInfo, SizeOf(FileInfo), #0);
 ImageList.ShareImages := true;
 ImageList.Handle := SHGetFileInfo(
   PChar(FileName),
   SFGAO_SHARE,
   FileInfo,
   SizeOf(FileInfo),
   SHGFI_SMALLICON or SHGFI_SYSICONINDEX
   );
 ImageList.GetIcon(FileInfo.iIcon, Result);
 ImageList.Free;
end;

...

ImageList1.AddIcon(GetIcon(FileName));



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

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

Наверх




Память: 0.49 MB
Время: 0.05 c
2-1161757352
Mishenka
2006-10-25 10:22
2006.11.12
Получение фокуса компонентом.


15-1161636000
Real
2006-10-24 00:40
2006.11.12
Интернет Радио - с чего начать?


8-1144273040
QuickFinder
2006-04-06 01:37
2006.11.12
Декомпиляция Flash-файла


1-1159545838
фыва_олдж_фыва
2006-09-29 20:03
2006.11.12
формы в длл


3-1158065644
NotGooDP
2006-09-12 16:54
2006.11.12
Информация о последней дате редактирования таблицы в MsSQL