GDI

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

GDI (Graphics Device Interface, Graphical Device Interface) — один из трёх основных компонентов или «подсистем», вместе с ядром и Windows API составляющих пользовательский интерфейс (оконный менеджер GDI) Microsoft Windows.

GDI — это интерфейс Microsoft Windows для представления графических объектов и передачи их на устройства отображения, такие как мониторы и принтеры.

GDI отвечает за отрисовку линий и кривых, отображение шрифтов и обработку палитры. Он не отвечает за отрисовку окон, меню и т. п., эта задача закреплена за пользовательской подсистемой, располагающейся в user32.dll и основывающейся на GDI. GDI схож с классическим QuickDraw у Apple.

Одно из наибольших преимуществ использования GDI вместо методов прямого доступа к оборудованию — это возможность расширения функций над различными устройствами. Используя GDI, можно легко рисовать на нескольких разных устройствах, таких как экран или принтер, и достичь практически одинакового отображения на них. Эта возможность лежит в центре всех WYSIWYG приложений для Microsoft Windows.

Простые игры, которые не требуют быстрой графики, используют GDI. Однако GDI не может обеспечить качественную анимацию (нет возможности синхронизации с кадровым буфером). Также GDI не хватает растеризации для отрисовки 3D-графики. Современные игры используют DirectX или OpenGL, что даёт программистам доступ к большему количеству аппаратных возможностей.

Содержание

[править] Технические детали

Контекст устройства (DC, Device Context) используется для определения атрибутов текста и изображения, которое выводится на экран или принтер. DC, как и большинство объектов GDI, является непрозрачным, то есть нельзя осуществить прямой доступ к данным.

[править] GDI+

После выхода Windows XP, использование GDI стало нежелательным из-за выхода в свет его потомка, подсистемы GDI+, основанной на C++. GDI+ является улучшенной средой для 2D графики, в которую добавлены такие возможности, как сглаживание линий (antialiasing), использование координат с плавающей точкой, градиентная заливка, внутренняя поддержка современных графических форматов (таких как JPEG и PNG), преобразования 2D матриц и т. п. GDI+ использует ARGB цвета. Эти возможности используются в пользовательском интерфейсе Windows XP, а их присутствие в базовом графическом слое облегчает использование систем векторной графики, таких как Flash или SVG. Динамические библиотеки GDI+ могут распространяться вместе с приложениями для использования в предыдущих версиях Windows.

В .NET можно использовать функции GDI+ через пространство имен System.Drawing.

GDI+ схож с подсистемой Quartz 2D у Apple и open-source библиотеками libart и Cairo.

[править] Уязвимости в GDI+

14 сентября 2004 года была обнаружена уязвимость в GDI+ и других графических API, связанная с ошибкой в коде стандартной библиотеки JPEG. Эта ошибка позволяла выполнить произвольный код на любой системе. Патч был выпущен 12 октября 2004 года.

[править] Ссылки


Источник — «http://ru.wikipedia.org/wiki/GDI»