Алекс Jenter - Программирование на Visual C++. Архив рассылки
- Название:Программирование на Visual C++. Архив рассылки
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алекс Jenter - Программирование на Visual C++. Архив рассылки краткое содержание
РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.
Программирование на Visual C++. Архив рассылки - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Далее мы еще будем рассматривать специфические (и такие эффектные!) возможности GDI+. Здесь же только опишем основные новшества.
Достоинства C++ – реализации:
• Объектно-ориентированный интерфейс:благодаря поддержке компилятора C++ мы "бесплатно" получаем контроль над типами и временем жизни объектов.
• Прозрачное управление памятью:объекты ядра GDI+ создаются в куче с помощью собственного менеджера памяти прозрачно для программиста.
• Использование перегрузки имен функций:функции одного назначения различаются только по своим параметрам.
• Собственное пространство имен:позволяет использовать понятные имена типов – такие, как Rect, Pen и Matrix – без конфликтов с другими библиотеками.
• Перегрузка операторов:предоставляет удобные операции '+' и '-' для таких типов, как Point и Size.
Архитектурные новинки библиотеки:
• Аппаратная абстракция:как уже было замечено, упрощается перенос на 64-битные платформы.
• теперь можно не бояться "оставить выбранной кисть в контексте перед удалением" – такая типичная для GDI ошибка! Новый дизайн графических функций/объектов:
• Разделение функций закраски и отрисовки:предоставляет большую гибкость в рисовании, например, позволяет заливать незамкнутые фигуры.
• Появление графических контейнеров:контейнеры позволяют "сцепить" вместе несколько операций и использовать как одну команду.
• Увеличившаяся поддержка путей (paths) и их взаимодействия с регионами:теперь пути являются полноправными объектами вне контекста рисования и могут легко трансформироваться в регионы.
Новые технологии и возможности (задержите дыхание):
• Градиентная закраска:позволяет заливать сложные фигуры оттенками с различными законами распределения цвета, рисовать векторные примитивы (например, линии) с градиентной окраской.
• Поддержка прозрачности:можно создавать кисти и растры с прозрачными и полупрозрачными областями, заливать области полупрозрачным цветом, назначать Color Key для растрового изображения и работать с его альфа-каналом, а также рисовать полупрозрачные (!) векторные примитивы и текст.
• Режимы улучшения изображения:позволяют значительно улучшить пользовательское восприятие за счет сглаживания контурных неровностей (antialiasing) и префильтрации растровых изображений.
• Сплайны:кроме уже существующих в GDI кривых Безье, поддерживается новый вид кривых – так называемые сплайны, которые имитируют поведение натянутой и изогнутой стальной полосы. Сплайны являются гладкими кривыми.
• Пути:как уже говорилось, пути теперь существуют независимо от контекста рисования и представляют собой мощное средство создания сложных векторных объектов. Кроме того, появилась возможность выравнивать (flatten) пути, то есть преобразовывать их к набору отрезков прямых.
• Координатные преобразования:объект Matrix позволяет осуществлять операции поворота, переноса, масштабирования и отражения объектов GDI+.
• Регионы:в отличие от GDI, регионы теперь не привязаны к координатам устройства и подчиняются координатным преобразованиям.
• Работа с растрами:теперь можно практически все! Поддерживается отрисовка растров с наложением внешнего альфа-канала, масштабированием, растяжением, искажением и поворотом растров. При этом можно установить режимы отображения отдельных пикселей – от простого переноса до префильтрации (наилучшее качество изображения). Стало возможным рисовать векторные примитивы, залитые текстурами (!).
• Поддержка популярных форматов графических файлов:необычайно приятное новшество для всех программистов, имеющих дело с разными графическими форматами. Поддерживаются форматы BMP, GIF, TIFF, JPEG, Exif(расширение TIFFи JPEGдля цифровых фотокамер), PNG, ICON, WMFи EMF. Декодеры различных форматов выполнены с учетом их специфики, так что Вы сможете, например, отобразить анимационный GIFили добавить комментарий к TIFF-файлу. Загруженный, созданный или модифицированный файл может быть сохранен на диск в одном из подходящих форматов. Существует возможность написания собственных декодеров.
• Формат EMF+: разумеется, все это великолепие не могло уместиться в тесные рамки старого Enhanced Metafile. Для описания новых возможностей был создан новый формат метафайла EMF+, который позволяет сохранить на диск и затем проиграть последовательность графических команд. Существует возможность записать "дуальный" метафайл, понятный старым GDI-программам. Новые программы будут читать из него GDI+ – информацию.
Поддержка GDI+ встроена непосредственно в операционные системы Windows XP и .NET Server. Для того чтобы приложения, использующие эту библиотеку, выполнялись на предыдущих версиях Windows, необходимо установить дистрибутив gdiplus_dnld.exeразмером около одного мегабайта. Найти его (и, возможно, другие необходимые обновления) можно на сайте Microsoft по адресу:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm
В его состав входят только инструкция по установке и уже упомянутая динамическая библиотека GdiPlus.dll, которую необходимо скопировать в системный каталог Windows 98/ME, Windows NT SP6 или Windows 2000. При этом возможности, предоставляемые непосредственно ядром Windows XP (в частности, технология ClearType для качественного отображения шрифтов на LCD-мониторах), будут недоступны.
ПРИМЕЧАНИЕ
Я не случайно не упомянул про Windows 95. На сайте Microsoft отсутствует всяческое упоминание о поддержке GDI+ для этой операционной системы. Тем не менее, единственная доступная мне для тестирования машина с Windows 95 OSR2 выполнила тестовое приложение без каких-либо проблем. Но ввиду отсутствия какой-либо официальной поддержки для использования GDI+ крайне рекомендуется обновить систему хотя бы до Windows 98.
В этой статье рассматривается интерфейс к GDI+, реализованный для языка C++ – хотя уже существует реализация Microsoft для системы CLR, входящей в состав .NET, и, безусловно, вскоре усилиями энтузиастов появятся другие (например, для VB и Delphi).
Заметим, что GDI+ (вернее, ее обертка для CLR), входящая в состав Microsoft .NET Framework SDK, является основным средством рисования в среде .NET. Однако доступная на данный момент Beta 2 имеет довольно большие отличия от реализации для C++ (не только архитектурные, но и чисто внешние, например, различающиеся имена некоторых классов). Я постараюсь коротко описать эти отличия в конце статьи.
Читать дальшеИнтервал:
Закладка: