Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Graph.doc
Скачиваний:
19
Добавлен:
14.05.2015
Размер:
238.59 Кб
Скачать

Общие параметры функций

Общие два первых параметра определяют точку привязки (левый верхний угол прямоугольной области вывода – параметр pt) и размеры области вывода (параметр size).

Параметр nFlags определяет тип изображения и может принимать одно из следующих значений:

  • DST_BITMAP – битовый массив; в последних двух версиях функции младшее слово параметра lData содержит дескриптор битового массива;

  • DST_COMPLEX – пользовательский тип изображения; для вывода изображения используется функция обратного вызова (callback), заданная параметром lpOutputFunc;

  • DST_ICON – пиктограмма; в последних двух версиях функции младшее слово параметра lData содержит дескриптор пиктограммы;

  • DST_PREFIXTEXT – символьная строка; если текст содержит символ "&", при выводе следующий за ним символ выводится с подчеркиванием, символ "&" не выводится; в последних двух версиях функции параметр lData содержит адрес символьной строки, а параметр wData содержит ее длину (количество символов), если этот параметр равен 0, то для определения длины строки она должна завершаться нулевым символом;

  • DST_TEXT – символьная строка; в последних двух версиях параметр lData содержит адрес символьной строки, а параметр wData содержит ее длину (количество символов), если этот параметр равен 0, то для определения длины строки она должна завершаться нулевым символом.

Из названия функции DrawState не совсем ясно, причем тут состояние (state). Параметр nFlags может комбинировать со значением типа изображения следующие флаги состояния, задающие вид модификации изображения:

  • DSS_NORMAL – модификации отсутствуют;

  • DSS_UNION – объединение части изображения с фоном, т.е. частичное разрушение (dithering) изображения (например, строки выводятся серым цветом);

  • DSS_DISABLED – "Выдавливание" (embossing) изображения – эффект рельефной каменной плиты;

  • DSS_DEFAULT – вывод изображения в более отчетливой (контрастной) форме;

  • DSS_MONO – область вывода заполняется при помощи заданной кисти (параметры hBrush или pBrush).

Примечание

В данном случае состояние DSS_DEFAULT названо так не с точки зрения программирования: по умолчанию используется флаг DSS_NORMAL, значение которого равно нулю и, следовательно, может в явном виде не задаваться.

Для всех состояний, кроме DSS_NORMAL, изображение конвертируется в монохромное перед тем, как к нему применяются эффекты.

Отображение эллипсов и многоугольников

Функции этой группы применяются для рисования сложных фигур, таких как эллипсы (Ellipse), сегменты (Chord), сектора (Pie), многоугольники (Rectangle, RoundRect, Polygon и PolyPolygon) и т.д. Функции используют для рисования текущие карандаш и кисть. Для выделения прямоугольной области можно использовать функцию DrawFocusReel, которая выполняет над содержимым области операцию XOR.

Здесь мне хотелось бы обратить ваше внимание на одну особенность рисования "гладких" линий на примере функции Pie:

BOOL CDC::Pie(

HDC hDC, // дескриптор контекста устройства

Int nLeftRect, // х-координата верхнего левого угла

int nTotRect, // у-ксордината верхнего левого угла

int nRightRect, // х-координата нижнего правого угла

int nBottomRect, // у-координата нижнего правого угла

int nXStart, // х-координата начала сектора

int nYStart, // у-координата начала сектора

int nXEnd, // х-координата конца сектора

int nYEnd); // у-координата конца сектора

Для соединения точки(nXStart, nYStart) с центром эллипса система использует воображаемую линию. В точке пересечения этой линии с ограничивающим прямоугольником система Windows начинает рисовать дугу эллипса в направлении против часовой стрелки. Рисование дуги завершается в точке пересечения воображаемой линии, соединяющей точку (nXEnd, nYEnd) с центром эллипса, и ограничивающего прямоугольника (рис. 7).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]