Режим закрашивания многоугольников. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Режим закрашивания многоугольников.



Существует два режима закрашивания сложных самопересекающихся многоугольников (polygon - filling mode): альтернативный (ALTERNATE), выбранный в контекст отображения по умолчанию, и режим заполнения (WINDING). В режиме заполнения область самопересечения закрашивается. В альтернативном режиме закрашиваются только области между нечетными и четными сторонами многоугольника, в результате чего область пересечения может оказаться либо закрашенной, либо незакрашенной. Для изменения режима закрашивания многоугольников предназначена функция SetPolyFillMode.

Перо.

Для того чтобы нарисовать линию или геометрическую фигуру, приложение Windows должно создать собственное перо (pen) или воспользоваться пером, выбранным в контекст отображения по умолчанию (черное перо шириной в один пиксель).

Можно создать новое перо, изменив его ширину, цвет или стиль (сплошная, пунктирная, штриховая и штрихпунктирная линии, а также линия, в которой на одну черточку приходится по две точки). К сожалению, можно изменить ширину только сплошной линии.

Для работы с перьями приложение Windows должно использовать функции CreatePen, CreatePenIndirect, SelectObject.

Текущая позиция пера.

Для рисования линий в интерфейсе GDI предназначена функция LineTo, которая использует понятие текущей позиции пера (current pen position). Функция LineTo рисует линию из точки, соответствующей текущей позиции пера в точку, указанную при помощи параметров. Для установки текущей позиции пера предназначена функция MoveTo.

По умолчанию текущая позиция пера равна значению (0,0), что в системе координат, выбранной по умолчанию, соответствует верхнему левому углу внутренней области окна. Заметим, что текущая позиция используется интерфейсом GDI только для рисования линий.

Изображение bitmap.

В контекст отображения можно выбрать изображение bitmap и затем отобразить его в окне или использовать в меню. По умолчанию в контекст отображения не выбирается никакое изображение bitmap. Приложение должно выбрать его самостоятельно, используя функцию SelectObject. В программном интерфейсе GDI имеются и другие функции для работы с изображениями bitmap. Это функции CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap.

Приложения Windows широко пользуются изображениями bitmap, так как они очень удобны для отображения небольших пиктограмм или больших и сложных многоцветных рисунков, полученных при помощи специальных графических редакторов или сканеров.

Режим растяжения.

Приложение Windows может копировать прямоугольные участки изображений bitmap, выполняя при этом масштабирование, т. е. сжатие или растяжение. Для такого копирования может быть использована, например, функция StretchBlt, которую мы рассмотрим в главе, посвященной изображениям bitmap.

Режим растяжения (stretching mode) влияет на способ, с помощью которого происходит масштабирование изображения bitmap. По умолчанию используется режим BLACKONWHITE, при котором два или большее количество соседних пикселей преобразуются в один пиксель при помощи логической операции "ИЛИ". В результате такого преобразования получается черный пиксель, если в исходном изображении любой пиксель из преобразуемой группы имеет черный цвет. Для того чтобы получился белый пиксель, все пиксели исходного изображения в преобразуемой группе пикселей должны быть белого цвета. В режиме BLACKONWHITE черный цвет преобладает над белым цветом.

Вы можете изменить режим растяжения, вызвав функцию SetStretchBltMode. При использовании режима WHITEONBLACK пиксели объединяются при помощи логической операции "ИЛИ", при этом в полученном изображении будет преобладать белый цвет. В режиме COLORONCOLOR в процессе преобразования могут быть полностью удалены отдельные строки или столбцы пикселей, что иногда дает хорошие результаты.

Однако, как правило, масштабирование изображений bitmap приводит к существенному ухудшению качества при любом режиме растяжения.

Область ограничения.

По умолчанию в контексте отображения задана область ограничения вывода (clipping region), совпадающая со всей областью вывода. Например, если приложение получило контекст отображения для окна, область ограничения совпадает с внутренней областью (client region) этого окна.

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

Для работы с областями предназначены следующие функции: CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreatePolyPolygonRgn, CreateRectRgn, CreateRoundRectRgn, ExcludeClipRgn, IntersectClipRgn, OffsetClipRgn, SelectclipRgn.

Режим отображения.

Режим отображения, установленный в контексте отображения, влияет на систему координат. Устанавливая различные режимы отображения, приложение может изменять направление и масштаб координатных осей.

По умолчанию в контексте отображения установлен режим отображения MM_TEXT. Для этого режима начало системы координат находится в верхнем левом углу внутренней области окна. Ось x направлена вправо, ось y - вниз. В качестве единицы измерения используется пиксель.

Такой режим отображения удобен для вывода текста. Иногда удобнее использовать обычную систему координат, в которой ось x направлена слева направо, а ось y - снизу вверх. Вы можете выбрать один из нескольких режимов отображения с таким направлением осей. В качестве единицы измерения можно использовать сотые и тысячные доли дюйма, сотые и десятые доли миллиметра и другие величины.

С помощью функции SetMapMode приложение может установить в контексте режим отображения, удобный для решения той или иной задачи.

В операционной системе Windows NT можно выбрать и другие системы координат, например, с наклонным расположением осей.



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 189; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.181.209 (0.005 с.)