Форум: "Начинающим";
Текущий архив: 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.065 c