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, существенно влияющих на вид графических фигур:
PageScale и PageUnit определяют единицы размеров при рисовании; по умолчанию единицей размера при рисовании на экране является пиксел (в главе 7 я расскажу о каждом из этих свойств подробнее);
свойство Transform — это объект типа Matrix, определяющий матричное преобразование для всей выводимой графической информации; преобразование перемещает, масштабирует, обрезает и вращает точки координат (подробнее о матричном преобразовании см. главу 7);
Clip — это область отсечения; будучи установленной, она ограничивает область вывода для любой из вызываемых функций рисования (об отсечении см. главу 15).
netlib.narod.ru | < Назад | Оглавление | Далее > |