Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Вниз

Вопрос о 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 вся ветка

Форум: "Media";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.055 c
15-1179715384
Slider007
2007-05-21 06:43
2007.06.17
С днем рождения ! 19 мая


2-1179903497
RomanLN
2007-05-23 10:58
2007.06.17
как в DBgrib вять(присвоить) содержимое нужной ячейки


10-1133792435
LORN
2005-12-05 17:20
2007.06.17
сохранить из olecontainer в ексел


3-1175072882
Xmen
2007-03-28 13:08
2007.06.17
проверка базы для соединения


2-1180337152
waif
2007-05-28 11:25
2007.06.17
Ordinal type required





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