Функции GDI Win-32, страница 10

Определяет ширину линии. Если параметр dwPenStyle - PS_GEOMETRIC, ширина дается в логических единицах. Если dwPenStyle - PS_COSMETIC, в ширине должна быть установлена 1.

Lplb

Указатель на структуру LOGBRUSH. Если dwPenStyle - PS_COSMETIC, член lbColor определяет цвет линии, и член lbStyle должен быть установлен в BS_SOLID. Если dwPenStyle - PS_GEOMETRIC, все члены должны использоваться для  определения  стиля поверхности.

DwStyleCount

Определяет длину  множества lpStyle. Эта значение должна быть ноль, если dwPenStyle - не PS_USERSTYLE.

LpStyle

Указатель на множество значений. Первое значение определяет длину первой черты в пользователем стиле, второе значение определяет длину первого места, и так далее. Этот указатель должен быть нулевой, если dwPenStyle - не PS_USERSTYLE.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение - обработка, которая опознает логическую ручку.

Если функция выполнена неуспешно, возвращаемое значение нулевое.

Замечания

Карандаш может иметь любую ширину и может иметь любой из типа поверхности и шаблонов.

Ширина карандаша всегда определяется в стандартных единицах. Ширина кисти - всегда 1.

Стиль кисти определен только для карандаша.

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

Если dwPenStyle - PS_COSMETIC и PS_USERSTYLE, вхождения в множестве lpStyle определяют длины черт и мест в единицах стиля. Единица стиля определена устройством, где ручка используется, чтобы рисовать линию.

Если dwPenStyle - PS_GEOMETRIC и PS_USERSTYLE, вхождения в множестве lpStyle определяют длины черт и мест в логических единицах.

Если dwPenStyle - PS_ALTERNATE, единица стиля игнорируется, и каждый другой пиксел установлен.

Когда Вы больше не нуждаетесь в ручке, вызовите функцию DeleteObject, чтобы удалить ее.

Функция CombineRgn объединяет два областии хранит результат в третьем областье. Эти два областиобъединены согласно указанному способу.

Int CombineRgn (

HRGN hrgnDest,       // обработка области предназначения

HRGN hrgnSrc1,       // обработка исходной области

HRGN hrgnSrc2,       // обработка исходной области

Int fnCombineMode    // область, объединяющая способ обьединения

);       

Параметры

HrgnDest

Опознает новую область с определенными измерениями,  объединяя две других области.

HrgnSrc1

Выделяет первую из двух областей, которые будут объединены.

HrgnSrc2

Выделяет вторую из двух областей, которые будут объединены.

FnCombineMode

Определяет способ, указывающий, как эти две областибудут объединены. Этот параметр может быть одним из следующих значений:

Значение          Описание

RGN_AND         Создает пересечение из двух объединенных областей.

RGN_COPY      Создает копию области, идентифицированной hrgnSrc1.

RGN_DIFF        Объединяет части hrgnSrc1, которые - не часть hrgnSrc2.

RGN_OR           Создает союз двух объединенных областей.

RGN_XOR         Создает союз двух объединенных областей, если не существует любых областей перекрывания.

Возвращаемое значение

Возвращаемое значение определяет тип заканчивающейся области. Это может быть одна из следующих ценностей:

Значение          Значение

NULLREGION               Область пуста.

SIMPLEREGION            Область - единственный прямоугольник.

COMPLEXREGION        Область - больше чем единственный прямоугольник.

ОШИБКА                      Никакая область не создана.

Замечания

Эти три области не должны быть отличными. Например, hrgnSrc1 параметр может равняться hrgnDest параметру.

Функция CreateEllipticRgn создает эллиптическую область

HRGN CreateEllipticRgn (

Int nLeftRect,             // x-координата верхнего левого угла прямоугольника ограничения

Int nTopRect,             // y-координата верхнего левого угла прямоугольника ограничения