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


Функция DrvStretchBltROP (winddi.h)

Функция DrvStretchBltROP выполняет растягивающую передачу битовых блоков с помощью ROP.

Синтаксис

BOOL DrvStretchBltROP(
  [in, out]      SURFOBJ         *psoDest,
  [in, out]      SURFOBJ         *psoSrc,
  [in, optional] SURFOBJ         *psoMask,
  [in]           CLIPOBJ         *pco,
  [in, optional] XLATEOBJ        *pxlo,
  [in, optional] COLORADJUSTMENT *pca,
  [in]           POINTL          *pptlHTOrg,
  [in]           RECTL           *prclDest,
  [in]           RECTL           *prclSrc,
  [in, optional] POINTL          *pptlMask,
  [in]           ULONG           iMode,
  [in]           BRUSHOBJ        *pbo,
  [in]           DWORD           rop4
);

Параметры

[in, out] psoDest

Указатель на структуру SURFOBJ , которая описывает поверхность для рисования.

[in, out] psoSrc

Указатель на структуру SURFOBJ, которая описывает исходную поверхность для передачи битовых блоков.

[in, optional] psoMask

Указатель на структуру SURFOBJ, которая определяет маску для источника. Маска определяется логической картой, которая представляет собой растровое изображение с одним битом на пиксель. Как правило, маска ограничивает область, изменяемую на целевой поверхности. Эта маска всегда имеет тот же размер, что и исходная поверхность.

[in] pco

Указатель на структуру CLIPOBJ , ограничивающую область, которая должна быть изменена в назначении. Подпрограммы службы CLIPOBJ_Xxx предоставляются для перечисления области клипа в виде набора прямоугольников.

По возможности GDI упрощает обрезку. Однако, в отличие от DrvBitBlt, DrvStretchBltROP можно вызывать с помощью одного прямоугольника обрезки. Это предотвращает ошибки округления при обрезке выходных данных.

[in, optional] pxlo

Указатель на структуру XLATEOBJ , указывающую способ преобразования цветовых индексов между исходной и целевой поверхностями. Если pxlo имеет значение NULL, перевод не требуется.

Эту структуру XLATEOBJ также можно запросить, чтобы найти цвет RGB для любого исходного индекса. Высококачественная растягивающая передача битовых блоков в некоторых случаях потребует интерполяции цветов.

[in, optional] pca

Указатель на структуру COLORADJUSTMENT, которая определяет значения корректировки цвета, применяемые к исходному растровом рисунку перед растягиванием битов. Дополнительные сведения см. в документации по Microsoft Windows SDK.

[in] pptlHTOrg

Указатель на структуру POINTL , которая определяет источник полутоновой кисти на целевой поверхности. При использовании полутоновых кистей драйвер должен выровнять верхний левый пиксель кисти с этой точкой и повторить кисть в соответствии с ее размерами. Драйвер должен игнорировать этот параметр, если для параметра rop4 не требуется шаблон.

[in] prclDest

Указатель на структуру RECTL , которая определяет прямоугольную область для изменения. Этот прямоугольник задается в системе координат целевой поверхности и определяется двумя точками: верхней левой и нижней правой. Две точки, определяющие прямоугольник, не всегда хорошо упорядочены, а это означает, что координаты второй точки не обязательно больше, чем координаты первой точки. Драйвер должен заменить два значения x и (или) два значения y , если прямоугольник назначения неправильно упорядочен.

Прямоугольник является эксклюзивным в нижнем правом углу; то есть нижний и правый края не являются частью копии.

DrvStretchBltROP никогда не вызывается с пустым прямоугольником назначения.

[in] prclSrc

Указатель на структуру RECTL, которая определяет копируемые области. Этот прямоугольник задается в системе координат исходной поверхности и определяется двумя точками: верхней левой и нижней правой. Две точки, определяющие прямоугольник, всегда хорошо упорядочены.

Прямоугольник является эксклюзивным в нижнем правом углу; то есть его нижний и правый края не являются частью копии.

Драйвер должен сопоставить этот прямоугольник с прямоугольником, определенным prclDest.

[in, optional] pptlMask

Указатель на структуру POINTL, определяющую пиксель в маске, на которую указывает prclMask . Этот пиксель соответствует верхнему левому пикселю в исходном прямоугольнике, на который указывает prclSrc . Драйвер должен игнорировать этот параметр, если маска не указана.

[in] iMode

Указывает, как исходные пиксели объединяются для получения выходных пикселей. Режим HALFTONE медленнее, чем в других режимах, но создает изображения более высокого качества. Этот параметр может иметь одно из следующих значений:

Значение Значение
BLACKONWHITE При сжатии битовых блоков пиксели должны сочетаться с операцией BOOLEAN AND. При растягивая передачу битовых блоков пиксели должны реплицироваться.
COLORONCOLOR При сжатии битовых блоков достаточное количество пикселей должно игнорироваться, поэтому их не нужно объединять. При растягивая передачу битовых блоков пиксели должны реплицироваться.
ПОЛУТОНАХ Драйвер может использовать группы пикселей в выходной поверхности, чтобы наилучшим образом приблизить цвет или серый уровень входных данных.
WHITEONBLACK При сжатии битовых блоков пиксели должны объединяться с логической операцией OR. При растягивая передачу битовых блоков пиксели должны реплицироваться.

[in] pbo

Указатель на структуру BRUSHOBJ, которая будет использоваться для определения шаблона для передачи битовых блоков. Подпрограмма обслуживания BRUSHOBJ_pvGetRbrush GDI извлекает реализацию кисти устройства. Драйвер может игнорировать этот параметр, если для параметра rop4 не требуется шаблон.

[in] rop4

Представляет растровую операцию, которая определяет, как маски, шаблон, исходные и целевые пиксели объединяются для записи выходного пикселя на целевую поверхность.

Это четвертичная растровая операция, которая является естественным продолжением обычной тернарной операции Rop3. Rop4 имеет 16 соответствующих битов, которые аналогичны 8 определяющим битам Rop3. (Другие избыточные биты Rop3 игнорируются.) Самый простой способ реализации Rop4 — отдельно рассмотреть его 2 байта. Нижний байт указывает Rop3, который должен вычисляться везде, где маска, на которую указывает psoMask , равно 1. Высокий байт указывает Rop3, который можно вычислить и применить везде, где маска равна нулю.

Возвращаемое значение

DrvStretchBltROP должен возвращать значение TRUE при успешном выполнении. В противном случае он должен сообщить код ошибки и вернуть значение FALSE.

Комментарии

Сопоставление определяется с помощью prclSrc и prclDest. Точки, указанные в prclDest и prclSrc , находятся на целочисленных координатах, которые соответствуют пиксельным центрам. Прямоугольник, определенный двумя такими точками, считается геометрическим прямоугольником с двумя вершинами, координаты которых являются заданными точками, но с 0,5, вычитаемыми из каждой координаты. (Структуры POINTL представляют собой сокращенную нотацию для указания этих дробных вершин координат.)

Драйвер может при необходимости реализовать DrvStretchBltROP. Если драйвер перехватывает этот вызов, он может вызвать EngStretchBltROP для выполнения тех операций растягивания щелей, которые он не поддерживает.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть winddi.h (включая Winddi.h)

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

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt