GDI и прорисовка нечетких растров (bitmap)

Больше
14 года 3 мес. назад #1 от cy6
Используя PG_THEME_PIC из плагина, для получения картинок из темы, озадачила небольшая проблемка (см. скрин). У некоторых картинок цвет "прозрачности" вокруг изображения не совсем черный (в нашем случае $040404), и при стандартном методе получения и применения маски получается мусор из "черных" точек вокруг.

Хотела попросить помощи в данном вопросе, не обладает ли кто алгоритмом решения данной проблемы. Насколько я понимаю, если в RnQ рисуется без "мусора", значит решение где то заложено.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
14 года 3 мес. назад - 14 года 3 мес. назад #2 от cy6
Нашла таки решение. :)
Оказывает с 32 битными изображениями нужно учитывать еще и альфа канал. :silly:
HBITMAP hBmpSrc = RnQ_GetThemePic("status.online");
HDC hdcSrc = CreateCompatibleDC(lpdis->hDC);
SelectObject(hdcSrc, hBmpSrc);	
BLENDFUNCTION ftn;
ftn.AlphaFormat = AC_SRC_ALPHA;
ftn.BlendOp = AC_SRC_OVER;
ftn.BlendFlags = 0;
ftn.SourceConstantAlpha = 0xFF;
AlphaBlend(lpdis->hDC, x + 2, y + 2, 16, 16, hdcSrc, 0, 0, 16, 16, ftn);
DeleteDC(hdcSrc);

Использование функций DrawTransparentBitmap, TransparentBlt или последовательности BitBlt, формирующей монохромную маску и использующей ее, кажись отменяется.
Вложения:
Последнее редактирование: 14 года 3 мес. назад пользователем cy6.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
14 года 3 мес. назад #3 от Rapid D
Хуже всего то, что нужно проверять, скока битов. Если меньше 32, то использование DrawTransparentBitmap не отменяеца...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: dekRapid D
Время создания страницы: 0.234 секунд
Работает на Kunena форум