Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.051 c
15-1161900433
Ketmar
2006-10-27 02:07
2006.11.12
что, правда?


2-1161891701
DiX
2006-10-26 23:41
2006.11.12
Помогите со временем


2-1161933177
_guest_
2006-10-27 11:12
2006.11.12
Можно ли послать сообщение компоненту не имеющему свойства Handle


15-1161891293
Anatoly Podgoretsky
2006-10-26 23:34
2006.11.12
Любителям запуздырить иконку туда где часики посвящается


3-1158322229
Shaman_
2006-09-15 16:10
2006.11.12
Добавить поля в DataSet после выборки данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский