Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.024 c
14-1125674974
Viktop
2005-09-02 19:29
2005.09.25
Компонент для работы с муз. файлами


1-1125492106
Харлам
2005-08-31 16:41
2005.09.25
Обработка Htm докуменов


14-1125247209
Ксардас
2005-08-28 20:40
2005.09.25
А DelphiDirect это что-то вроде WindowsUpdate?


2-1124186969
Пантелеев Иван
2005-08-16 14:09
2005.09.25
Работа с реестром


1-1125482078
Barloggg
2005-08-31 13:54
2005.09.25
Какое сложение двух пар чисел быстрее?