CopyImage & ImageList_AddMasked - проблемы с маской при отри
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 16.08.05 14:48
Оценка:
Пытаюсь изменить размеры HBITMAP и затем добавить его в ImageList с маской для последующего отображения иконки на тулбаре

Размеры меняю через CopyImage так
HBITMAP copy_bitmap(HBITMAP hbmp, int new_x, int new_y)
{
 return (HBITMAP)CopyImage( (HANDLE)hbmp, IMAGE_BITMAP, new_x, new_y, LR_CREATEDIBSECTION);
}


Цвет маски получаю по верхнему левому пикселю так (используя WTL)
CDC memDC;
memDC.CreateCompatibleDC(0);
HBITMAP hOld = memDC.SelectBitmap(hbmp);
clr = memDC.GetPixel(0, 0);
memDC.SelectBitmap( hOld );


При масштабировании я всегда передаю не нулевой новый размер.

Возникает такой эффект. Если исходные размеры hbmp равны получаемым, то все Ок. Если размеры отличаются только по одному измерению, то все ок (пробовал масштабировать в 4 раза). Если размеры отличаются и по ширине и по высоте, то маски не получается (пробовал изменять ш/в на один пиксель). При отрисовке битмапа он отрисовывается вместе с фоном. Проверял цвет маски — во всех случаях он один и тот же. Пока вижу выход только в последовательном изменении размера по одной стороне, затем по другой, но это обход проблемы, а не ее решение.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.