![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужно получить по известному хэндлу иконки её глубину цвета [D7, Win2k, WinXP]
Ale}{(is) © (2004-08-06 16:39:00)Уважаемые Мастера! Помогите решить следующую проблему. Нужно получить по известному хэндлу иконки её глубину цвета. Пробовал получать AND битмап этой иконки, но он всегда имеет глубину 32-bit, т. е. как у экрана. А мне нужно получить реальную глубину. Заранее благодарен.
Mihey_temporary (2004-08-09 15:59:00) [1]Попробуй может напиши в Microsoft, мол ваша же API.
Ale}{(is) (2004-08-09 15:57:00) [2]Очень жаль, придётся искать обходные решения!
Mihey_temporary (2004-08-09 15:19:00) [3]> К сожалению, меня опять не так поняли. Проблема такова: пользователь меняет свойство моего класса Icon: HICON и в результате должны обновиться другие поля этого класса, а именно Width, Height и BPP.
Но ты сам писал:
> Читаю я иконку из файла. Но потом пользователь может заменить одну из иконок файла на другую. А при записи в файл нужно получить её параметры, в частности BPP, что я сделать не могу. Помогите!
В таком случае можно не работать с иконкой явно, а внутри хранить иконку как TBitmap, а загрузку и сохранение и передачу как HICON делать вручную.
Просто не ты первый, кто столкнулся с такой проблемой при работе с HICON. Решения я не знаю.
Ale}{(is) (2004-08-09 11:20:00) [4]К сожалению, меня опять не так поняли. Проблема такова: пользователь меняет свойство моего класса Icon: HICON и в результате должны обновиться другие поля этого класса, а именно Width, Height и BPP. Т. о. ничего кроме переменной типа HICON у меня нет, ни файла, ничего вообще. А XORMask, возвращаемые GetIconInfo возвращает всегда 32-битный битмап.
Mihey_temporary (2004-08-07 19:13:00) [5]Я знаю эту проблему и не нашёл ей решения, точнее нашёл обход - вручную гружу из файла иконку и все данные, тогда без проблем. Вот модуль, реализующий это дело. Иконки грузятся в TBitmap, PixelFormat которого всегда без проблем опеределяется.
http://www.hot.ee/mvps21/IconLoad.rar
Ale}{(is) (2004-08-07 09:51:00) [6]Читаю я иконку из файла. Но потом пользователь может заменить одну из иконок файла на другую. А при записи в файл нужно получить её параметры, в частности BPP, что я сделать не могу. Помогите!
Кириешки (2004-08-07 07:44:00) [7]А получить саму иконку, и ее уже измерить?
function GetIcon(wnd:hwnd):TIcon;
begin
result:=TIcon.Create;
result.Handle:=GetClassLong(wnd,GCL_HICON);
end;
procedure TForm1.....Click(Sender: TObject);
var
h : thandle;
begin
h := handleIconki;
geticon(h);
image1.Picture.Icon:=GetIcon(h);
end;
Может быть так получится. Хотя я не знаю, код написал пряма тута и не проверял.
Mihey_temporary (2004-08-06 18:07:00) [8]Походу дела очень сложно. Но можно обойти проблему. Как тебе нужно загружать иконки? Если из файла, то данные об этом можно считать напрямую.