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 года.
[править] Ссылки
- Microsoft’s GDI+ page
- Bob Powell’s GDI+ FAQ list
- MSDN article on GDI overview
- Microsoft Security Bulletin MS04-028
- F-Secure: Critical vulnerability in MS Windows may escalate the virus threat
| Это незавершённая статья о Microsoft Windows. Вы можете помочь проекту, исправив и дополнив её. |

