GDI и прорисовка нечетких растров (bitmap)
- cy6
- Не в сети
- Elite Member
-
Меньше
Больше
- Сообщений: 273
- Спасибо получено: 0
14 года 6 мес. назад #1
от cy6
cy6 создал тему: GDI и прорисовка нечетких растров (bitmap)
Используя PG_THEME_PIC из плагина, для получения картинок из темы, озадачила небольшая проблемка (см. скрин). У некоторых картинок цвет "прозрачности" вокруг изображения не совсем черный (в нашем случае $040404), и при стандартном методе получения и применения маски получается мусор из "черных" точек вокруг.
Хотела попросить помощи в данном вопросе, не обладает ли кто алгоритмом решения данной проблемы. Насколько я понимаю, если в RnQ рисуется без "мусора", значит решение где то заложено.
Хотела попросить помощи в данном вопросе, не обладает ли кто алгоритмом решения данной проблемы. Насколько я понимаю, если в RnQ рисуется без "мусора", значит решение где то заложено.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- cy6
- Не в сети
- Elite Member
-
Меньше
Больше
- Сообщений: 273
- Спасибо получено: 0
14 года 6 мес. назад - 14 года 6 мес. назад #2
от cy6
cy6 ответил в теме RE: GDI и прорисовка нечетких растров (bitmap)
Нашла таки решение. 
Оказывает с 32 битными изображениями нужно учитывать еще и альфа канал.
Использование функций DrawTransparentBitmap, TransparentBlt или последовательности BitBlt, формирующей монохромную маску и использующей ее, кажись отменяется.

Оказывает с 32 битными изображениями нужно учитывать еще и альфа канал.

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 года 6 мес. назад пользователем cy6.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Rapid D
-
- Не в сети
- Administrator
-
Меньше
Больше
- Сообщений: 1995
- Спасибо получено: 35
14 года 6 мес. назад #3
от Rapid D
Rapid D ответил в теме RE: GDI и прорисовка нечетких растров (bitmap)
Хуже всего то, что нужно проверять, скока битов. Если меньше 32, то использование DrawTransparentBitmap не отменяеца...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Модераторы: dek, Rapid D
Время создания страницы: 0.292 секунд