Графическая система Windows
У многих визуальных объектов есть объектное свойство canvas, через которое и происходит рисование. Почему объектное? Да потому что canvas имеет тип объекта TCanvas. То есть в нашем компоненте за рисование отвечает объект. Таким образом, если компонент поддерживает рисование, то у него обязательно должно быть такое свойство.
Canvas в переводе с английского означает холст. Получается, что каждый компонент— это холст, на котором нарисовано изображение компонента. Взглянем на кнопку. На самом деле это не кнопка, а холст, на котором нарисовано изображение кнопки и текст. Когда вы щелкаете клавишей мыши по кнопке, изображение изменяется и приобретает вид нажатой кнопки.
Графика Windows действительно представляет рисование на холсте. А для этого необходимы две вещи— карандаш для рисования (реп) и кисть для закраски • Brush). Именно такие свойства и присутствуют у объекта canvas. Карандаш используется для рисования линий и контуров, а кисть используется для закраски замкнутых областей. У обоих есть свои свойства (цвет, тип и т. д.), но чтобы было понятнее, посмотрите на рис.
Это простой прямоугольник. Контур прямоугольника рисуется карандашом (в данном случае черного цвета). Центр прямоугольника закрашивается кистью (у нас серого цвета). Но не надо думать, что все приходится рисовать по пикселам (точка на экране монитора). В Windows для вас уже заготовлено достаточно инструмен-
тов для облегчения процесса работы с графикой.
Кисть и карандаш тут являются основой, по которой определяются цвета и стиль закраски.
Вообще, большое количество готовых инструментов — это самое большое достоинство Windows. Благодаря этому операционная система имеет такую популярность у программистов (легче программировать). Значит больше выходит программного обеспечения и, следовательно, появляется больше возможностей у пользователей. Все это сделало Windows одной из наиболее используемых в настоящее время ОС. И недаром совсем недавно Стив Балмер (президент Microsoft) бегал по сцене на одной из конференций и кричал на весь зал: "Developers, Developers, Developers". Я думаю, что не нужно говорить, что это слово означает "разработчики".
Графические инструменты Windows объединены под одним названием — GDI (Graphic Device Interface — интерфейс графических устройств). Все функции для работы с графикой находятся в одной динамической библиотеке gdi.dll, но подробнее о библиотеках будет сказано чуть позже. Да, GDI — не единственные функции, есть еще GDI+, DirectX и в Vista, вроде бы появились еще какие-то функции, но мы остановимся только на базовых функциях, потому что о графике можно писать отдельную книгу.
Еще одним плюсом GDI является то, что все функции аппаратно-независимые. Это значит, что результат вывода графики будет одинаков вне зависимости от графического устройства (видеокарты), установленной в компьютере. Каждая карта имеет свои особенности, и специфика ее работы может отличаться от других. Но для GDI все это не имеет значения. Однако тут же появляются минусы GDI:
- он не использует графического ускорения и других дополнительных возможностей современных видеокарт;
- он слишком медлителен для приложений, нуждающихся в быстрой обрисовке графики (например, для игр);
- в нем поддерживается только двухмерная графика.
Все эти минусы отражаются на том, что GDI не предназначен для создания игр, однако хорошо подходит для офисных приложений. Красивые графики можно построить и с помощью 20-графики, а 3D требуется очень редко. К тому же, расчетов и отображения в реальном времени от нас в большинстве случаев требовать не будут. А вот игры хорошо создавать с помощью OpenGL или DirectX, но об этом тоже надо вести отдельный разговор, потому что тема трехмерного программирования слишком большая.