Обработка поверхностей Device-Managed
Важно!
Мы рекомендуем использовать драйвер класса "Входящие" от Майкрософт iPP вместе с приложениями поддержки печати (PSA) для настройки печати в Windows 10 и 11 для разработки принтеров.
Дополнительные сведения см. в руководстве по проектированию приложений поддержки печати.
Когда Unidrv отрисовывает изображения страниц печати, он использует управляемые GDI поверхности рисования. Все изображения отрисовываются в виде растровых изображений. Для устройств с возможностями, которые не могут использоваться в этом сценарии, например с возможностью рисования векторов, можно предоставить поддержку настраиваемого драйвера для управляемой устройством поверхности рисования. Для поддержки управляемой устройством поверхности необходимо предоставить подключаемый модуль отрисовки, реализующий следующее:
Набор функций подключения для всех графических функций DDI, поддерживаемых Unidrv. Необходимо подключить следующие функции:
DrvAlphaBlendDrvBitBltDrvCopyBitsDrvDitherColorDrvFillPathDrvGradientFillDrvLineToDrvPlgBltDrvRealizeBrushDrvStretchBlt DrvStretchBltROPDrvStrokeAndFillPathDrvStrokePathDrvTextOutDrvTransparentBlt
Метод IPrintOemUni::EnableDriver , который используется для предоставления Unidrv указателей на графические функции перехватчика DDI.
Метод IPrintOemUni::D riverDMS , который сообщает Unidrv о том, что будет использоваться управляемая устройством поверхность, и указывает, какие из определенных функций перехватчика будут использоваться для поверхности.
Функции подключения не могут вызывать службы поддержки GDI с префиксом Eng при рисовании на поверхности, управляемой устройством. Однако они могут создать временную поверхность растрового изображения, а затем передать дескриптор этой поверхности в функции рисования с префиксом Eng (см. раздел Отрисовка задания печати).
Метод IPrintOemUni::D riverDMS вызывается при каждом отрисовке задания печати, поэтому подключаемый модуль отрисовки может указать тип поверхности отрисовки (управляемой GDI или устройством) для каждого задания. Для выбора surface на основе выбранного параметра в пользовательском интерфейсе необходимо также предоставить подключаемый модуль пользовательского интерфейса.
Рисование текста на Device-Managed Surface
Подключаемый модуль отрисовки должен подключать функцию DrvTextOut в Unidrv (наряду со всеми другими графическими функциями рисования DDI). Создание текста для управляемой устройством поверхности предполагает взаимодействие между следующими четырьмя функциями:
Функция DrvTextOut Unidrv
Функция перехватчика DrvTextOut подключаемого модуля отрисовки
Метод IPrintOemDriverUni::D rvUniTextOut в Unidrv
Метод IPrintOemUni::TextOutAsBitmap подключаемого модуля отрисовки
Ниже приведены шаги, связанные с отображением текста на управляемой устройством поверхности.
GDI вызывает функцию DrvTextOut Unidrv.
Unidrv вызывает функцию-перехватчик DrvTextOut подключаемого модуля отрисовки.
Функция перехватчика отправляет на устройство команды для указания кисти, поворота и области обрезки текста.
Функция перехватчика вызывает метод IPrintOemDriverUni::D rvUniTextOut , который использует загруженные шрифты для вывода текста. Этот метод также обрабатывает обрезку на основе глифов.
Если IPrintOemDriverUni::D rvUniTextOut не может использовать загружаемый шрифт (так как шрифт недоступен или повернут), он вызывает метод IPrintOemUni::TextOutAsBitmap подключаемого модуля отрисовки, который рисует текст в виде растрового рисунка.
После возврата IPrintOemDriverUni::D rvUniTextOut функция-перехватчик DrvTextOut должна рисовать подчеркивание и зачеркивание на основе прямоугольников, заданных параметром prclExtra функции DrvTextOut, с помощью векторных команд (если поддерживается).
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по