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

Вниз

Глубина цвета в TImageList   Найти похожие ветки 

 
CRLF   (2012-02-02 19:25) [0]

Имеем примерно такое:
_IL := TImageList.Create(nil);
 //_IL.ResourceLoad(rtBitmap, "GLYPHS", clWhite);
 _IL.Handle := ImageList_LoadBitmap(HInstance, "GLYPHS", 16, 0, clWhite);

 Bmp := TBitmap.Create;
 _IL.GetBitmap(0, bmp);
 Bmp.SaveToFile("d:\Glyph.bmp");
 FreeAndNil(Bmp);

В ресурсе лежит 24-битный битмап (или 8-битный, на результат не влияет). В итоговом d:\Glyph.bmp получаем 16-цветную картинку. Почему так? Windows 7 SP1, Delphi XE, если это имеет значение.


 
Dimka Maslov ©   (2012-02-02 19:46) [1]

PixelFormat


 
CRLF   (2012-02-02 19:50) [2]

PixelFormat -- это у битмапа. С битмапом полный порядок. Если я загружаю в битмап напрямую из ресурса, с цветами всё в порядке.

Картинка портится где-то в глубинах ImageList. В порядке эксперимента пробовал принудительно ставить ImageList.ColorDepth := cd24Bit, не помогает. Сохраняемой картинке можно задать любую битность, но реально цветов остаётся 16.


 
Dimka Maslov ©   (2012-02-02 19:56) [3]

Bmp.PixelFormat надо выставлять перед сохранением. ImageList портит картинки. Это факт. Как вариант использовать TList c битмапами.


 
CRLF   (2012-02-02 19:59) [4]


> ImageList портит картинки. Это факт.
А где об этом факте пишут авторитетные источники? MSDN, например.


 
Dimka Maslov ©   (2012-02-02 20:17) [5]

Инфа 100%. На основании собственного опыта.


 
CRLF   (2012-02-03 12:36) [6]

Цирк на дроті... Если из ресурса загрузить в битмап, а затем ImageList.AddMasked(Bmp, ...), то глубина цвета сохраняется. Если же прямо из ресурса в ImageList грузить, то цвет урезается до четырёхбитного.


 
brother ©   (2012-02-03 15:20) [7]

> Если же прямо из ресурса в ImageList грузить, то цвет урезается
> до четырёхбитного

а что там в генофонде по этому поводу? может стоит чуть переписать?


 
CRLF   (2012-02-03 15:24) [8]


> а что там в генофонде по этому поводу?
А фиг его знает. ImageList_LoadBitmap/ImageList_LoadImage портит цвета. ImageList_Add не портит.


 
brother ©   (2012-02-03 16:18) [9]

> А фиг его знает

а посмотреть?


 
CRLF   (2012-02-03 17:01) [10]

Мы, видимо, друг друга не поняли. ImageList.AddMasked() в итоге приводит к вызову апишной ImageList_Add. В приведенном выше примере используется апишная же ImageList_LoadBitmap, вызов TImageList.ResourceLoad() в конечном итоге приводит к вызову ImageList_LoadImage(). Куда ещё глубже смотреть? :-)


 
Dimka Maslov ©   (2012-02-03 17:05) [11]

Ничего в мсдне про кол-во бит на цвет не сказано.


 
brother ©   (2012-02-03 18:14) [12]

> в мсдне про кол-во бит на цвет не сказано

это не радует(



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

Форум: "Основная";
Текущий архив: 2014.09.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
15-1393055181
vajo
2014-02-22 11:46
2014.09.28
Выбор железа для PC


1-1328221517
tButton
2012-02-03 02:25
2014.09.28
Поиск комбинации (оптимальный алгоритм)


15-1392810488
Кунг-Фу Панда
2014-02-19 15:48
2014.09.28
Посимвольное сравнение


2-1382536357
Дмитрий
2013-10-23 17:52
2014.09.28
Останов без точки останова


15-1393187403
Юрий
2014-02-24 00:30
2014.09.28
С днем рождения ! 24 февраля 2014 понедельник





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