netlib.narod.ru< Назад | Оглавление | Далее >

Свойства и состояние

В некоторые среды программирования графики включено понятие текущей позиции (current position). Эту координату среда удерживает в памяти и использует как начальную точку для функций рисования. В общем случае графическая система определяет пару функций: одну для установки текущей позиции, другую — для рисования линии от текущей позиции до заданной точки. При этом функция рисования переносит текущую позицию в новую точку.

В GDI+ нет понятия текущей позиции. Это может несколько шокировать ветеранов программирования для Windows, поскольку для рисования линии в Windows GDI нужно вызвать две функции, для каждой из которых определена одна координата. Функция MoveTo устанавливает текущую позицию в заданную точку, a LineTo проводит линию до этой точки (но не включает ее в состав линии).

GDI+ также отличается от Windows GDI наличием у функций DrawLine и DrawString аргументов, задающих шрифт, кисть и перо. Если бы GDI+ был более похож на Windows GDI, то шрифт, кисть и перо были бы атрибутами объекта Graphics. Вспомните, что StringFormat задает некоторые подробности, касающиеся вывода текста. StringFormat тоже является аргументом метода DrawString, а не свойством объекта Graphics.

В силу этого архитекторы GDI+ назвали свое детище «средой программирования графики без сохранения состояния» (stateless graphics programming environment). Однако GDI+ не полностью соответствует такому названию. В таком случае у класса Graphics изменяемые свойства отсутствовали бы вовсе! А так у этого класса, помимо 6 неизменяемых свойств, есть еще и 12 изменяемых.

Я насчитал 4 изменяемых свойства класса Graphics, существенно влияющих на вид графических фигур:


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz