Поделиться через


Функция 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)

См. также раздел

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

EngAssociateSurface

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt