Структура BLENDFUNCTION управляет плавным переходом цвета и тона, устанавливая функции сопряжения для источниковых и принимающих точечных рисунков.
Синтаксис
typedef struct _BLENDFUNCTION { BYTE BlendOp; BYTE BlendFlags; BYTE SourceConstantAlpha; BYTE AlphaFormat; }BLENDFUNCTION, *PBLENDFUNCTION, *LPBLENDFUNCTION; |
Определяет исходную операцию плавного перехода цвета и тона. В текущий момент действуют только исходный и принимающий плавный переход цвета и тона, которые были установлены в AC_SRC_OVER. Детали см. ниже в разделе Замечания.
Устанавливает α-значение прозрачности, которое будет использоваться на всем источниковом точечном рисунке. Значение SourceConstantAlpha комбинируется с любым α-значением одиночного пикселя в исходном точечном рисунке. Если Вы устанавливаете SourceConstantAlpha в 0, это предполагается, что ваше изображение является прозрачным. Устанавливайте значение SourceConstantAlpha в 255 (непрозрачный вид), если Вы хотите использовать α-значение только пикселя .
Этот член структуры управляет способом, которым интерпретируются исходные и принимающие точечные рисунки . AlphaFormat имеет ниже следующее значение.
Значение | Предназначение | |
---|---|---|
AC_SRC_ALPHA | Этот
флажок устанавливается тогда, когда
точечный рисунок имеет α-канал
(то есть уровень непрозрачности
на пиксель).
|
Замечания
Когда параметр AlphaFormat - AC_SRC_ALPHA, исходный точечный рисунок должен иметь 32 бита на пиксель (bpp). Если это не так, функция AlphaBlend завершится ошибкой.
Когда параметр BlendOp - AC_SRC_OVER, исходный точечный рисунок помещается поверх принимающего точечного рисунка, базирующегося на α-значениях источниковых пикселей.
Если источниковый точечный рисунок не имеет α-значения одиночного пикселя (то есть флажок AC_SRC_ALPHA не установлен), значение SourceConstantAlpha устанавливает плавный переход цвета и тона источниковых и принимающих точечных рисунков, как показано в таблице ниже.
Обратите внимание! на то, что тут SCA используется для SourceConstantAlpha. К тому же, SCA поделен на 255, потому что он имеет значение, которое располагается от 0 до 255. |
Dst.Red | = Src.Red * (SCA/255.0) | + Dst.Red * (1.0 - (SCA/255.0)) |
Dst.Green | = Src.Green * (SCA/255.0) | + Dst.Green * (1.0 - (SCA/255.0)) |
Dst.Blue | = Src.Blue * (SCA/255.0) | + Dst.Blue * (1.0 - (SCA/255.0)) |
Если принимающий точечный рисунок имеет α-канал, тогда плавный переход цвета и тона следующие.
Dst.Alpha | = Src.Alpha * (SCA/255.0) | + Dst.Alpha * (1.0 - (SCA/255.0)) |
Если исходный точечный рисунок не использует член SourceConstantAlpha (то есть он равняется 0xFF), α-уровень непрозрачности на пиксель обуславливает плавный переход цвета и тона исходного и принимающего точечных рисунков, как показано в таблице ниже.
Dst.Red | = Src.Red | + (1 - Src.Alpha) * Dst.Red |
Dst.Green | = Src.Green | + (1 - Src.Alpha) * Dst.Green |
Dst.Blue | = Src.Blue | + (1 - Src.Alpha) * Dst.Blue |
Если принимающий точечный рисунок имеет α-канал, тогда плавный переход цвета и тона следующие.
Dest.Alpha | = Src.Alpha | + (1 - SrcAlpha) * Dst.Alpha |
Если источник имеет, и член SourceConstantAlpha (то есть он не 0xFF), и α-уровень непрозрачности на пиксель, источник умножается в обратном порядке на SourceConstantAlpha, и тогда плавный переход цвета и тона базируется на α-уровне непрозрачности пикселя. Нижеследующая таблица показывает это.
Обратите внимание! на то, что это, SourceConstantAlpha разделен 255, потому что он имеет значение которое, располагается от 0 до 255. |
Src.Red | = Src.Red | * SourceConstantAlpha / 255.0; |
Src.Green | = Src.Green | * SourceConstantAlpha / 255.0; |
Src.Blue | = Src.Blue | * SourceConstantAlpha / 255.0; |
Src.Alpha | = Src.Alpha | * SourceConstantAlpha / 255.0; |
Dst.Red | = Src.Red | + (1 - Src.Alpha) * Dst.Red |
Dst.Green | = Src.Green | + (1 - Src.Alpha) * Dst.Green |
Dst.Blue | = Src.Blue | + (1 - Src.Alpha) * Dst.Blue |
Dst.Alpha | = Src.Alpha | + (1 - Src.Alpha) * Dst.Alpha |
где,
Src.Red - источник красного; |
Src.Green - источник зеленого; |
Src.Blue - источник синего; |
Src.Alpha - источник α-уровня непрозрачности; |
Dst.Red - приемник красного; |
Dst.Green - приемник зеленого; |
Dst.Blue - приемник синего; |
Dst.Alpha - приемник α-уровня непрозрачности; |
Смотри также
Обзор Точечные рисунки, Структуры, используемые точечными рисунками, AlphaBlend
Размещение и совместимость BLENDFUNCTION |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Нет |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Нет |
Используемая библиотека |
Нет |
Заголовочный файл |
|
- объявлено в |
Wingdi.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |