Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.17;
Скачать: CL | DM;

Вниз

Вопрос о 32 битном битмапе.   Найти похожие ветки 

 
McFalu ©   (2006-09-03 10:10) [0]

Если у меня в обекте ICON класса TICON  есть изображение( 32 битное) как мне его сохранить, если обекты класса TICON сохраняються в 16 бит.
Может можно как-то?


 
kami ©   (2006-09-03 13:57) [1]

McFalu ©   (03.09.06 10:10)
обекты класса TICON сохраняються в 16 бит.


Поправка :
"обекты" класса TIcon сохраняются с 16 цветами :)

Я поступил криво :
скопировал Graphics.pas в папку со своим проектом и заменил в procedure WriteIcon строки
InternalGetDIB[Sizes](...., [нужное количество цветов вместо 16]).


 
Vovan#1   (2006-09-03 17:52) [2]

В Delphi TIcon весьма ограничен. У него проблемы ещё и с записью .ico файлов, содержащих не одну иконку. Можно либо самому писать чтение/запись иконок, либо использовать компоненты или библиотеки сторонних авторов (например, KIcon). Я как-то раз писал что-то подобное, загрузку и запись сделал, далее оформлять не стал. Если надо - могу дать эти исходники.


 
McFalu ©   (2006-09-04 18:00) [3]


> В Delphi TIcon весьма ограничен. У него проблемы ещё и с
> записью .ico файлов, содержащих не одну иконку. Можно либо
> самому писать чтение/запись иконок, либо использовать компоненты
> или библиотеки сторонних авторов (например, KIcon). Я как-
> то раз писал что-то подобное, загрузку и запись сделал,
> далее оформлять не стал. Если надо - могу дать эти исходники.
>


А что за компонент KIcon


 
McFalu ©   (2006-09-04 18:21) [4]


> Я поступил криво :
> скопировал Graphics.pas в папку со своим проектом и заменил
> в procedure WriteIcon строки
> InternalGetDIB[Sizes](...., [нужное количество цветов вместо
> 16]).


Я так поступил. Заменил 16 на 32. Ничего не вышло. Все равно Сохраняет в 16.
Даже заменил в Sourse\vcl файл на отредактированый. Все равно не выходит


 
McFalu ©   (2006-09-04 19:37) [5]

есть 4 поля:
InternalGetDIBSizes(IconInfo.hbmMask, MonoInfoSize, MonoBitsSize, 2);
InternalGetDIBSizes(IconInfo.hbmColor, ColorInfoSize, ColorBitsSize, 16);

InternalGetDIB(IconInfo.hbmMask, 0, MonoInfo^, MonoBits^, 2);
InternalGetDIB(IconInfo.hbmColor, 0, ColorInfo^, ColorBits^, 16);
Если меняю последние, тогда компилятор выдает ошибку.
Можно поменть только вторую строку на 32.

Может я что-то делаю не так?


 
Vovan#1   (2006-09-04 21:24) [6]

KIcon тут:
http://www.torry.net/pages.php?id=105

Там он требует JEDI Code Library (JCL). Можно тогда сразу использовать JVCL - в них, говорят, есть что-то подходящее.

Просто поменять значения аргументов не получится. Загляни, хотя бы, в:

procedure InitializeBitmapInfoHeader(Bitmap: HBITMAP; var BI: BitmapInfoHeader;
 Colors: Integer);

(куда этот Colors подставляется)


 case Colors of
   2: BI.biBitCount := 1;
   3..16:
     begin
       BI.biBitCount := 4;
       BI.biClrUsed := Colors;
     end;
   17..256:
     begin
       BI.biBitCount := 8;
       BI.biClrUsed := Colors;
     end;


Значит, если бы всё и получилось, при 32 ты получил бы 8-мибитную иконку.


 
kami ©   (2006-09-05 09:28) [7]

Вместо 16 и там и там поставь 16384 - удивишься :)
Ведь имеется ввиду количество цветов, а не количество бит, выделяемых под них. 32(6 бит) цвета от 16(4 бита) отличаются не очень сильно.


 
McFalu ©   (2006-09-05 16:34) [8]

Все работает. ОГРОМНОЕ СПАСИБО to kami.
Только понять не могу, почему разработчики Delphi сразу не могли это прортсать, что очень сложно.


 
Neud   (2006-10-03 09:53) [9]


> kami ©

Иконки сохраняются не корректно.



Страницы: 1 вся ветка

Текущий архив: 2007.06.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
1-1177133804
Залозных Игорь
2007-04-21 09:36
2007.06.17
Файл как параметр функции


15-1179646386
Knight
2007-05-20 11:33
2007.06.17
Выговор Slider007&#133 за пропущенное 19-ое мая&#133


2-1180100114
забыл ник %)
2007-05-25 17:35
2007.06.17
Подсказка в трее


6-1164229160
flaxe
2006-11-22 23:59
2007.06.17
Заблокировать Всю Сеть


15-1179914699
_alex_niv_
2007-05-23 14:04
2007.06.17
алгоритм поиска строк методом cуффиксного дерева





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский