Пытаюсь изменить размеры 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>>