Рисование расширенного метафайла с альфа-каналом с использованием PlayEnhMetaFile - PullRequest
1 голос
/ 27 февраля 2012

Я пытаюсь преобразовать расширенный метафайл, содержащий прозрачные области, в 32-битное растровое изображение, используя только функции GDI. Возможно ли получить правильные значения альфа-канала?

Следующее приводит к 32-битной битовой карте с альфа-значением каждого пикселя, установленным в 0:

Сначала я создаю DC памяти с CreateCompatibleDC(NULL) и HBITMAP с CreateCompatibleBitmap, используя экран DC, полученный с GetDC(NULL). (Последний создает дескриптор 32-битного растрового изображения.)

Затем я выбираю созданное растровое изображение в памяти DC, используя SelectObject.

Наконец, я рисую расширенный метафайл, содержащий прозрачные области, в DC памяти, используя PlayEnhMetaFile.

1 Ответ

1 голос
/ 28 февраля 2012

У меня нет опыта работы с PlayEnhMetaFile, но вы можете рисовать контроллеры памяти с альфа-каналом с AlphaBlend

inline BOOL AlphaBlt(HDC hDC, int x, int y, int cx, int cy, HDC hSrcDC, int xSrc, int ySrc, int cxSrc, int cySrc)
{
    static BLENDFUNCTION bf = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA};
    return AlphaBlend(hDC, x, y, cx, cy, hSrcDC, xSrc, ySrc, cxSrc, cySrc, bf);
}

Надеюсь, что это поможет.

...