Принтер gdi что это
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
GDI (Graphics Device Interface)
GDI (Graphics Device Interface) — один из трёх основных компонентов или «подсистем», вместе с ядром и Windows API, составляющих пользовательский интерфейс (оконный менеджер GDI) Microsoft Windows.
GDI — это интерфейс Windows для представления графических объектов и передачи их на устройства отображения, такие, как мониторы и принтеры.
GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры. Он не отвечает за отрисовку окон, меню и т. п., эта задача закреплена за пользовательской подсистемой, располагающейся в user32.dll и основывающейся на GDI. GDI выполняет те же функции, что и QuickDraw в Mac OS.
Одно из преимуществ использования GDI вместо прямого доступа к оборудованию — это унификация работы с различными устройствами. Используя GDI, можно одними и теми же функциями рисовать на разных устройствах, таких, как экран или принтер, получая на них практически одинаковые изображения. Эта возможность лежит в центре всех WYSIWYG-приложений для Windows.
Простые игры, которые не требуют быстрой графики, могут использовать GDI. Однако GDI не обеспечивает качественной анимации, поскольку в нём нет возможности синхронизации с кадровым буфером. Также в GDI нет растеризации для отрисовки 3D-графики. Современные игры используют DirectX или OpenGL, что даёт программистам доступ к большему количеству аппаратных возможностей. [Источник 1]
Содержание
Поддерживаемые операции
GDI поддерживает следующие операции рисования:
Контекст устройства
Получение контекста устройства окна
Функция Rectangle принимает следующие аргументы: контекст устройства, координаты левого верхнего угла, координаты правого нижнего угла.
Функция TextOut принимает аргументы: контекст устройства, координаты левого верхнего угла текста, текстовая строка, количество символов в текстовой строке.
Функция Release принимает аргументы: окно, контекст устройства.
Вывод графики в нескольких окнах
Когда заполняется структура WNDCLASS, чтобы зарегистрировать класс окна программы в Windows, заполняется поле style:
Данное поле задаёт стиль класса окон. Значение CS_OWNDC говорит, что для каждого окна данного класса будет создан свой контекст устройства. [Источник 3]
Типы контекста устройства
В GDI существуют пять типов контекста устройства:
Регионы Windows
Для повышения эффективности работы Windows оперирует с несколькими типами регионов. Идея заключается в том, чтобы рисовать именно в той части окна, которая требует обновления, а не перерисовывать все окно. Также регионы позволяют отсекать вывод той части графической информации, которая не может быть отображена в данный момент. Вообще полное изучение всей иерархии регионов и их взаимодействия является непростой задачей, требующей пространного из ложения1. В то же время приведенное ниже упрощенное описание достаточно для понимания работы большинства функций Win32 GDI.
Обновляемый регион (update region), или, как его тоже иногда называют, недействительный регион (invalid region) — это часть окна, которая требует обновления после возникновения тех или иных событий.
Видимый регион (visible region) — та часть окна, которую в данный момент видит пользователь. Система изменяет видимый регион окна и в том случае, когда окно изменяет размеры, и в том случае, когда перемещение другого окна либо закрывает часть данного окна, либо открывает закрытую прежде часть.
Регион отсечения (clipping region) ограничивает область, внутри которой система разрешает отображение графической информации. Когда приложение получает контекст устройства при помощи функции BeginPaint, система устанавливает регион отсечения путем пересечения видимого региона и обновляемого региона. Приложение может ужесточить регион отсечения и ввести дополнительные ограничения при помощи вызова функции SetWindowRgn, SelectClipPath или SelectClipRgn.
Если при создании окна функцией CreateWindow был использован стиль WS_CLIPCHILDREN или WS_CLIPSIBLINGS, то это вносит дополнительные правила в определение видимого региона, исключая из него любое дочернее или любые «сестринские» окна. Благодаря этому рисование не затрагивает отображаемые области таких окон.
GDI принтеры
Non-GDI принтеры требуют аппаратные средства, оборудование и память для рендеринга страницы; принтер GDI использует ЭВМ для этого, что делает его дешевле в производстве, чем подобные Non-GDI принтеры. Некоторые производители выпускают, по сути, один и тот же принтер в версиях, совместимых с языком управления принтера, такие как PCL или PostScript, и дешевле GDI-only версия.
Принтер с собственным языком управления может принимать входные данные от любого устройства с подходящим драйвер; для принтера GDI требуется ПК с операционной системой Windows. В общем принтеры GDI не совместимы с аппаратными принт-серверами, хотя некоторые серверы имеют встроенные возможности обработки, что делает их совместимыми с принтерами GDI. [Источник 5]
GDI+ является улучшенной средой для 2D-графики, в которую добавлены такие возможности, как сглаживание линий (antialiasing), использование координат с плавающей точкой, градиентная заливка, возможность работы изнутри с такими графическими форматами, как JPEG и PNG, куда лучшая реализация регионов отсечения с возможностью использовать в них координаты с плавающей точкой (а не 16-битные целые) и применения к ним World Transform, преобразования двумерных матриц и т. п. GDI+ использует ARGB-цвета. Эти возможности используются в пользовательском интерфейсе Windows XP, а их присутствие в базовом графическом слое облегчает использование систем векторной графики, таких, как Flash или SVG.
Динамические библиотеки GDI+ могут распространяться вместе с приложениями для использования в предыдущих версиях Windows.
GDI+ схож с подсистемой Quartz 2D у Apple и библиотеками с открытым кодом libart и Cairo.
GDI+ есть не более чем набор обёрток над обычной GDI. В Windows 7 появился новый API Direct2D, который есть примерно то же, но реализован «сверху донизу» вплоть до драйвера видеокарты (точнее, использует некие возможности Direct3D в этом драйвере), и может использовать аппаратное ускорение — то есть видеопроцессор трёхмерной графики для рисования некоторых двухмерных объектов (antialiasing и т. д.)
Уязвимости
14 сентября 2004 года была обнаружена уязвимость в GDI+ и других графических API, связанная с ошибкой в коде библиотеки JPEG. Эта ошибка позволяла выполнить произвольный код на любой системе Windows. Патч для исправления уязвимости был выпущен 12 октября 2004 года. [Источник 7]
18.1.4. GDI-принтеры
GDI-принтеры[4] заслуживают отдельного разговора, поскольку Linux их не поддерживает.
Дело в том, что на обычный аппаратный (не GDI) принтер операционная система отправляет задание, после чего принтер, используя собственный процессор, сам занимается его обработкой и выводом на печать. В GDI-принтере процессор отсутствует, и обработка информации возлагается на центральный процессор компьютера. Делается это с одной целью — удешевления устройства как такового. Ясно, что в GDI-принтере на несколько микросхем меньше, следовательно, он стоит дешевле. Как правило, производители GDI-принтеров не утруждают себя разработкой драйверов для Linux и ограничиваются лишь драйверами для Windows и, иногда, Mac OS. Именно поэтому такие принтеры еще порой называют Win-принтерами — они могут работать только в Windows.
Скорее всего, на прилагаемом к принтеру компакт-диске с драйверами найдутся драйверы для всего семейства Windows, а также для Mac OS, но не для Linux. Далее я приведу список моделей, которые Linux поддерживает явно, но в списке может не быть модели, выбранной вами, и тогда лучше всего спросить у продавца (или прочитать в руководстве по принтеру), сможет ли данный принтер работать в Linux. Можно также поискать отзывы о выбранном принтере в Интернете и узнать, имеются ли у него проблемы с работой в Linux. Если да, то такой принтер лучше не покупать.
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРес
Читайте также
Принтеры и цвет
Принтеры и цвет В секции Оборудование остались неохваченными вниманием два модуля — и описание обоих вполне уместится на одну страницу. Обратившись у пункту Принтеры, я увидел, что у меня нет настроенных принтеров: Поскольку физически у меня имелось МФУ DeskJet 2050, я нажал
Устройства и принтеры
Устройства и принтеры Данный механизм является усовершенствованием механизма Принтеры и факсы, который использовался в предыдущих версиях операционной системы Windows. В отличие от него, новый механизм содержит данные не только о принтерах и факсах, но и о любых других
Принтеры
Принтеры Запрет на удаление установленных в системе принтеровЧтобы запретить пользователю удалять установленные в системе принтеры, используйте ключ °NoDeletePrinter° в разделе HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplоrerСмотри также: Запрет на установку новых принтеров в
Сокрытие пункта Пуск→Настройка→Принтеры
Сокрытие пункта Пуск?Настройка?Принтеры Для того чтобы скрыть пункты меню Пуск?Панель управления, Пуск?Настройка?Принтеры (и соответствующие пиктограммы в папке Мой компьютер), внесите следующие изменения в
Сокрытие пиктограммы Принтеры в панели управления
Сокрытие пиктограммы Принтеры в панели управления Ключ:[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer] Значение:
Принтеры
Принтеры Первоначально печатающие устройства для компьютеров были не более чем модифицированными электрическими печатными машинками. Долгие годы, как во времена мейнфреймов, то есть больших ЭВМ, так и в эпоху персональных компьютеров, распечатки получали
18.1.1. Струйные принтеры
18.1.1. Струйные принтеры Со временем уровень печати, обеспечиваемый матричными принтерами, перестал удовлетворять запросы потребителей — текст они еще печатали, а вот, скажем, графику — уже нет (о цветных фотографиях я вообще молчу). И с появлением на рынке струйных
18.1.2. Лазерные принтеры
18.1.2. Лазерные принтеры Принцип действия лазерного принтера довольно сложен, поэтому здесь мы его рассматривать не станем. Поговорим лучше о потребительских свойствах. Качество печати лазерного принтера очень высокое, скорость печати — тоже. Лазерный принтер нужно
18.1.4. GDI-принтеры
18.1.4. GDI-принтеры GDI-принтеры[4] заслуживают отдельного разговора, поскольку Linux их не поддерживает.Дело в том, что на обычный аппаратный (не GDI) принтер операционная система отправляет задание, после чего принтер, используя собственный процессор, сам занимается его
Принтеры
Принтеры С помощью реестра можно запретить пользователям удаление установленных в системе принтеров. Для этого необходимо в разделе HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer создать REG_DWORD-параметр NoDeletePrinter и присвоить ему значение 1. Ниже приведен текст соответствующего
Глава 9 Принтеры и прочие периферийные устройства
Глава 9 Принтеры и прочие периферийные устройства Реальная стоимость принтера зависит от номинала купюр, которые он способен качественно напечатать. Первое правило фальшивомонетчика В этой главе мы закончим знакомство с периферийными
Современные струйные принтеры Олег Нечай
Современные струйные принтеры Олег Нечай Опубликовано 21 февраля 2011 года В отличие от матричных принтеров, способных лишь на воспроизведение текста и монохромной псевдографики, «струйники» выдавали полноцветные цветные отпечатки с плавными
Устройства и принтеры
Устройства и принтеры Вот простой пример переопределения типа. Рассмотрим понятие устройства, включив предположение о том, что для любого устройства есть альтернатива, так что устройство можно заменить, если оно по каким-либо причинам недоступно:class DEVICE featurealternate:
Домашние лазерные принтеры Олег Нечай
Домашние лазерные принтеры Олег Нечай Опубликовано 28 февраля 2011 года За эти годы лазерная печать, которая ещё совсем недавно была по карману лишь корпоративному заказчику, прочно обосновалась в «домашних офисах» студентов, учёных, юристов,
Принтеры
Принтеры Самыми популярными из вспомогательных устройств являются принтеры, позволяющие переносить информацию с экрана компьютера на бумагу.В настоящее время наиболее распространены два типа принтеров:? лазерные принтеры;? струйные принтеры.Раньше также
Диалоги о печатных тонкостях: языки описания страниц
История появления
Итак, с чего же всё начиналось? Наверное, все ещё помнят огромные и безумно шумные матричные принтеры, которые в нашем случае можно взять за историческую исходную точку в деле SOHO-печати. Со словосочетанием «матричный принтер» в первую очередь ассоциируется Epson. Собственно, компания Epson и придумала в далёких 70-х язык ESC/P (Epson Standard Code for Printers), который и по сей день поддерживается некоторыми другими производителями (к примеру, Brother) офисно-ориентированных устройств вывода посредством режима эмуляции.
Немногим позже, в 1981 году, IBM представила свою версию языка описания страниц под названием PPDS (Personal Printer Data Stream). Анонс совпал с выходом в свет первого принтера IBM, способного печатать графические изображения. Примерно в это же время на рынке появляется HP с языком PCL (Printer Command Language), который использовался в первых ударных и струйных принтерах. Тремя годами позже был представлен публике и первый релиз PostScript (также известный с постфиксом Level 1), базировавшийся на свободных исходниках Xerox и созданный силами только что основанной компании Adobe. Неудивительно, что и небезызвестная Microsoft включилась в эту софтварную гонку, правда, уже ближе к концу 80-х. Разработанный ею интерфейс GDI (Graphics Device Interface) используется в Windows для вывода текстовой и графической информации на принтеры и мониторы по сей день.
Вот так через краткий экскурс в историю мы наметили основной курс нашего материала, а в частностях стоит разобраться поподробнее, дабы исключить всякого рода языковые барьеры между пользователем и его печатающим устройством.
PostScript
Фактически это не просто язык описания страниц (то есть набор каких-то кодов сродни алфавиту), а целый язык программирования с типичными командами (циклы, операторы, структуры данных), посредством которого можно писать настоящие программы с неповторимой гибкостью. Именно неповторимой, потому как PostScript (PS) с момента своего появления остаётся почти абсолютным стандартом в области профессиональной печати и допечатной подготовки. Но, несмотря на то что PS предоставляет широкие возможности максимально качественной цветной печати, он не совсем подходит для «рутинной» печати простых текстовых документов ввиду своей невысокой скорости и некоторых других недостатков.
PS отличается от прочих языков полной независимостью от разрешения принтера или плоттера. Команды PS представлены в виде ASCII (American Standard Code for Information Interchange) кодов, потому, к примеру, для вывода особых пользовательских шрифтов они должны быть преобразованы в совместимый с PS векторный формат. При отправке на печать изображение формируется «полистно», именно потому для профессиональной техники так актуальны большие объёмы кэш-памяти.
Популярный графический формат EPS (Encapsulated PostScript) – это своего рода дополнение к PS. Файлы в этом формате могут содержать как векторные, так и растровые элементы, а особая строгая структура, в соответствии с которой данные упорядочиваются внутри документа, позволяет создавать кросс-платформенные исходники для печати.
В отличие от PS этот язык не может похвастаться полной совместимостью со всеми аппаратно-программными решениями и обладает зависимостью от разрешения печатающего устройства, но в то же время может свободно и совершенно бесплатно использоваться любыми производителями устройств и разработчиками ПО. Последняя версия языка (PCL6), которая разрабатывалась HP в тесном сотрудничестве с Microsoft, характеризуется высокой скоростью преобразования данных из формата прикладного приложения в формат языка описания страниц и обеспечивает ускоренный возврат ответа в приложение, потому идеально подходит для SOHO-сегмента. Также PCL способен работать непосредственно с TrueType-шрифтами, которые применяются по умолчанию в среде Windows.
При использовании PCL показатели скорости и качества печати напрямую зависят от драйвера устройства, потому всякого рода несовместимости аппаратной и программной составляющих значительно влияют на количество ошибок при печати. По этому параметру PCL не может сравниться с универсальным PS. Тем не менее PCL на данный момент является, пожалуй, самым распространённым языком, применяемым в офисной и домашней среде.
И PS, и PCL подразумевают наличие специального контроллера со стороны принтера, который принимает команды языка описания страниц, а затем преобразует их в бинарные (0/1) коды, управляющие непосредственно самим механизмом печати. Идея GDI состоит в том, чтобы избавить печатающее устройство от дорогостоящего контроллера и переложить его функции на центральный процессор вместе с драйвером. Отсюда же следует первый недостаток GDI: требовательность к системным ресурсам. Этот язык подразумевает конвертацию графической информации и шрифтов в единое растровое изображение, которое затем и отправляется на печать.
Поддержкой исключительно языка GDI обладают лишь самые бюджетные принтеры. В большинстве случаев производители стараются оснастить свои продукты как минимум совместимостью с PCL (не говоря уже о PS) хотя бы через эмуляцию, что, опять же, накладывает определённые требования на ресурсы системы. Также GDI отличается от PS и PCL своими сравнительно скудными возможностями функционирования в рамках локальной сети, а добавить эту опцию можно лишь при помощи дополнительного, далеко не дешёвого сетевого контроллера. Исходя из этого, GDI рекомендуется использовать для индивидуальных домашних нужд.
Резюме
PS и PCL часто называют реальными языками описания страниц, тогда как существуют ещё и своего рода надстройки над ними, которые были созданы для упрощения процесса программирования или реализации дополнительных возможностей. Такие надстройки интерпретируют собственные команды в последовательность команд реального языка описания в соответствии с его синтаксисом. К примеру, надстройка над PCL под названием RPCS (Refined Printing Command Stream) была разработана компанией Ricoh для визуализации программирования своих знаменитых плоттеров посредством графических пиктограмм. При помощи BR-Script фирмы Brother реализуются расширенные функции калибровки цвета, а также эмулируются команды языков PS Level 3 и ESC/P.
Приведём своеобразный рейтинг реальных языков применительно к SOHO-сегменту (чем больше баллов, тем лучше):