Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глубина цвета в TImageList


CRLF ©   (2012-02-02 19:25:00) 

Имеем примерно такое:
_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, если это имеет значение.


brother   (2012-02-03 18:14:00) [1]

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

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


Dimka Maslov   (2012-02-03 17:05:00) [2]

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


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

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


brother   (2012-02-03 16:18:00) [4]

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

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


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


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


brother   (2012-02-03 15:20:00) [6]

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

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


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

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


Dimka Maslov   (2012-02-02 20:17:00) [8]

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


CRLF   (2012-02-02 19:59:00) [9]


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


Dimka Maslov   (2012-02-02 19:56:00) [10]

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


CRLF   (2012-02-02 19:50:00) [11]

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

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


Dimka Maslov   (2012-02-02 19:46:00) [12]

PixelFormat


Наверх

Титульная страница Поиск, карта сайта Написать письмо