Текущий архив: 2005.09.25;
Скачать: CL | DM;
Вниз
Потеря цвета в TImage Найти похожие ветки
← →
kami © (2005-09-04 01:33) [0]Получаю иконку папки с помощью SHGetFileInfo. Отображаю сразу - все нормально. Сохраняю в Stream > опять загружаю - цветность теряется.
Как можно этого избежать?
← →
kami © (2005-09-04 01:35) [1]упс... прошу прощения, не TImage, а TIcon.
Но тем не более, от этого не легче :(
← →
kami © (2005-09-04 11:17) [2]На всякий случай - код (Up в смысле )
procedure TForm1.GetFileIcon(const FFileName:string);
var
FileAttr:DWORD;
uFlags:Cardinal;
SHFileInfo:_SHFileInfoA;
begin
CoInitialize(nil);
FileAttr:=FILE_ATTRIBUTE_NORMAL;
uFlags:=SHGFI_ICON or SHGFI_LARGEICON;
SHGetFileInfo(@FFileName[1],FileAttr,SHFileInfo,SizeOf(SHFileInfo),uFlags);
FFileIcon:=TIcon.Create;
FFileIcon.handle:=CopyImage(SHFileInfo.hIcon,IMAGE_ICON,0,0,LR_COPYDELETEORG);
CoUninitialize;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not OpenDialog1.Execute then
exit;
GetFileIcon(OpenDialog1.FileName);// если отобразить после этого, то иконка нормальная
Stream:=TMemoryStream.Create;
FFileIcon.SaveToStream(Stream);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Stream.Position:=0;
FFileIcon.LoadFromStream(Stream);
Image1.Picture.Icon.Assign(FFileIcon);// а вот здесь уже с потерей цвета :(
Stream.Free;
end;
← →
Antonn © (2005-09-04 11:23) [3]в каком смысле цвет теряется? прозрачность? тогда маска нужна
← →
kami © (2005-09-04 11:28) [4]Antonn © (04.09.05 11:23) [3]
В том то и дело, что не прозрачность, а получается как будто 256-цветная (если не еще меньше)
← →
kami © (2005-09-05 21:41) [5]Up :)
Ну, можно считать, нашел. Еще раз всем спасибо за помощь, особенно себе :))
В процедуре WriteIcon модуля Graphics обнаружил, что иконки записываются в поток 16-ти цветными !!!
Заменил на 32768 цветов, положил Graphics в папку с программой и остался доволен :)
Теперь вопрос - не переборщил ли я с глубиной цвета ? Какова максимальная у иконок в XP ?
← →
Джо © (2005-09-05 21:51) [6]
> Какова максимальная у иконок в XP ?
32 бита, afaik.
← →
kami © (2005-09-05 21:58) [7]Джо © (05.09.05 21:51) [6]
Упс...:)
Не-е, столько мне не нужно,я не такой жадный. Думаю, 16 бит хватит вполне :)
← →
Джо © (2005-09-05 22:05) [8]
> [7] kami © (05.09.05 21:58)
Там жеж еще альфа-канал для обеспечения "полупрозрачности". Кажись, стандартный TIcon вообще не поддерживает.
← →
kami © (2005-09-05 22:21) [9]Джо © (05.09.05 22:05) [8]
Ага, понял и уже нашел "нестандартный TIcon ".
PS. Да здравствует Torry !
Страницы: 1 вся ветка
Текущий архив: 2005.09.25;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.04 c