Функция DrvTransparentBlt (winddi.h)
Функция DrvTransparentBlt обеспечивает возможность передачи битовых блоков с прозрачностью.
Синтаксис
BOOL DrvTransparentBlt(
[in, out] SURFOBJ *psoDst,
[in] SURFOBJ *psoSrc,
[in] CLIPOBJ *pco,
[in, optional] XLATEOBJ *pxlo,
[in] RECTL *prclDst,
[in] RECTL *prclSrc,
[in] ULONG iTransColor,
[in] ULONG ulReserved
);
Параметры
[in, out] psoDst
Указатель на структуру SURFOBJ , которая определяет целевую поверхность, на которой выполняется рисование.
[in] psoSrc
Указатель на структуру SURFOBJ, которая определяет исходную поверхность передачи битового блока.
[in] pco
Указатель на структуру CLIPOBJ . Подпрограммы службы CLIPOBJ_Xxx предоставляются для перечисления области клипа в виде набора прямоугольников. Это перечисление ограничивает область измененного назначения. По возможности GDI упрощает обрезку.
[in, optional] pxlo
Указатель на структуру XLATEOBJ , которая указывает, как следует преобразовать исходные цветовые индексы для записи в целевую поверхность. Если pxlo имеет значение NULL, преобразование не требуется.
[in] prclDst
Указатель на структуру RECTL , которая определяет изменяемую прямоугольную область. Этот прямоугольник задается в системе координат поверхности назначения и определяется двумя точками: верхней левой и нижней правой. Прямоугольник является исключающим в правом нижнем углу; то есть нижний и правый края не являются частью передачи битового блока. Две точки, определяющие прямоугольник, всегда хорошо упорядочены.
DrvTransparentBlt никогда не вызывается с пустым прямоугольником назначения.
[in] prclSrc
Указатель на структуру RECTL, которая определяет прямоугольную область для копирования. Этот прямоугольник задается в системе координат исходной поверхности и определяется двумя точками: верхней левой и нижней правой. Две точки, определяющие прямоугольник, всегда хорошо упорядочены.
Исходный прямоугольник никогда не будет превышать границы исходной поверхности и поэтому никогда не будет нависать над исходной поверхностью.
Этот прямоугольник сопоставляется с прямоугольником назначения, определенным prclDst. DrvTransparentBlt никогда не вызывается с пустым исходным прямоугольником.
[in] iTransColor
Задает физический прозрачный цвет в формате исходной поверхности. Для устройств с палитрами это значение является индексом палитры. Для устройств без палитр это значение является цветом RGB в формате, который используется в исходной поверхности. Например, если исходный формат поверхности имеет формат RGB 5:6:5, значение в этом параметре также будет находиться в той же форме.
[in] ulReserved
Защищены; Для этого параметра необходимо задать нулевое значение.
Возвращаемое значение
DrvTransparentBlt возвращает значение TRUE при успешном выполнении. В противном случае возвращается значение FALSE.
Комментарии
При необходимости можно реализовать функцию DrvTransparentBlt в графических драйверах.
Передача битовых блоков с прозрачностью поддерживается между двумя управляемыми устройством поверхностями или между поверхностью, управляемой устройством, и растровым изображением стандартного формата, управляемым GDI. Рекомендуется использовать средства записи драйверов для поддержки операций blting из точечных изображений за пределы экрана устройства в видеопамяти на другие поверхности в видеопамяти; все остальные варианты можно использовать в EngTransparentBlt с небольшими показателями производительности. Драйвер может выполнять вызовы с управляемыми устройством поверхностями в EngTransparentBlt.
Пиксели на исходной поверхности, которые соответствуют прозрачному цвету, указанному в iTransColor , не копируются. Подробное описание прозрачных blts см. в разделе Копирование точечных изображений.
Драйвер никогда не будет вызываться с перекрывающимися прямоугольниками источника и назначения на одной поверхности.
Драйвер должен игнорировать все неиспользуемые биты в сравнении клавиш цвета, например для наиболее значимого бита, если растровое изображение имеет формат 5:5:5 (по пять битов красного, зеленого и синего).
Драйвер перехватывает DrvTransparentBlt , устанавливая флаг HOOK_TRANSPARENTBLT при вызове EngAssociateSurface. Если драйвер подключил DrvTransparentBlt и вызывается для выполнения операции, которую он не поддерживает, драйвер должен иметь GDI для обработки операции путем пересылки данных в вызове EngTransparentBlt.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | winddi.h (включая Winddi.h) |