АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Создание и рисование регионов

Читайте также:
  1. В этом же году было учреждено Общественное Объединение «Кырк Кыз», который проводит работу в рамках всех регионов Республики и с 2013 года является сетью.
  2. Внешняя политика в царствование Александра III, создание франко-русского союза
  3. Вопрос 20. Создание специальных образовательных учреждений в дореволюционной России
  4. Г. ноябрь Создание партии «Союз 17 октября».
  5. Глава VIII. СОЗДАНИЕ ИМИДЖА
  6. ГОСУДАРСТВЕННОЕ СТРОИТЕЛЬСТВО В РОССИИ.СОЗДАНИЕ СССР
  7. Екатерина Великая и Потемкин в истории Украины-Руси. Создание Новороссии и укрепление Малороссии
  8. Жизнь и церковная деятельность святого Саввы Сербского. Создание автокефальной Сербской Церкви. Провозглашение Сербского патриаршества.
  9. Завершающий этап формирования ЕВС. Создание евро
  10. Зависимость некоторых стран и регионов от импорта металлов
  11. Загрязнение регионов техносферы токсичными веществами (атмосферы, гидросферы, земель)
  12. ЗАДАНИЕ 11. Создание графических изображений

Унифицированным средством, задающим границу области вывода, является регион, который может иметь прямоугольную, многоугольную, эллиптическую формы или их сочетание. Регион является объектом, идентифицируемым его описателем HRGN.

Произвольный регион создается универсальной функцией:

ExtCreateRegion (const XFORM *lpXform, DWORD nDataSize,

const RGNDATA lpRgnData);

структура XFORM описывает преобразование региона в экранные координаты, при его равенстве NULL координаты считаются идентичными; регион описывается структурой RGNDATA, содержащей поля:

RGNDATAHEADER rdh – структура данных заголовка;

char Buffer [1] – буфер структур RECT, образующих регион.

В свою очередь, структура RGNDATAHEADER содержит поля:

DWORD dwSize – размер заголовка в байтах;

DWORD iType – тип региона (RGN _ RECTANGLES);

DWORD nCount – количество прямоугольников в буфере;

DWORD nRgnSize – требуемый размер буфера (может быть нулевым);

RECT rcBound – вмещающий прямоугольник для региона.

Простейший тип региона – прямоугольник может быть создан с помощью функций

hRgn = CreateRectRgn (xLeft, yTop, xRight, yBottom);

hRgn = CreateRectRgnIndirect (&rect);

Для создания эллиптических регионов:

hRgn = CreateEllipticRgn (xLeft, yTop, xRight, yBottom);

hRgn = CreateEllipticRgnIndirect (&rect);

Функция CreateRoundRectRgn строит прямоугольный регион со скругленными углами.

Создание многоугольного региона (похоже на функцию Polygon):

hRgn = CreatePolygonRgn (&point, iCount, iPolyFillMode);

параметр point – массив структур типа POINT, iCount – число точек, iPolyFillModeALTERNATE (WINDING). Регион из множества многоугольников – CreatePolyPolygonRgn.

Два региона могут быть объединены в один функцией:

iRgnType = CombineRgn (hDestRgn, hSrcRgn1, hSrcRgn2, iCombine);

которая комбинирует два исходных региона (hSrcRgn1 и hSrcRgn2) и строит третий, на который ссылается hDestRgn. Все три описателя регионов еще до вызова функции должны быть действительными, однако дополнительный регион, описываемый ранее hDestRgn, уничтожается.

Параметр iCombine задает правило объединения регионов:

RGN_AND – область пересечения двух исходных регионов;

RGN_OR – объединение двух исходных регионов;

RGN_XOR – объединение двух исходных регионов за исключением области пересечения;

RGN_DIFF – часть региона hSrcRgn1, не входящая в регион hSrcRg2;

RGN_COPY– регион hSrcRgn1.

Значение iRgnType, возвращаемое функцией, означает: NULLREGION – регион пуст; SIMPLEREGION – регион представляет собой простой прямо­уго­льник, эллипс или многоугольник; COMPLEXREGION – комбинация прямоугольников, эллипсов или многоугольников; ERROR – произошла ошибка.

Полученный описатель региона можно использовать в функциях

FillRgn (hdc,hRgn,hBrush); FrameRgn (hdc,hRgn,hBrush,xFrame,yFrame);

InvertRgn (hdc, hRgn); PaintRgn (hdc, hRgn);

аналогичных функциям FillRect (закрашивание прямоугольной области), FrameRect (закрашивание границы прямоугольной области) и InvertRect (инвертирование пикселей в прямоугольнике); параметры xFrame и yFrame – ширина и высота рамки, которая будет нарисована вокруг региона.

Функция PaintRgn закрашивает внутреннюю область региона текущей выбранной в контекст устройства кистью. Во всех функциях предполагается, что регион определен в логических координатах.

Для удаления региона используется функция удаления объектов GDI:

DeleteObject (hRgn);

Функция GetRgnData позволяет получить доступ к данным региона по его описателю. Вмещающий прямоугольник для региона может быть получен функцией GetRgnBox.

Функции PtInRegion и RectInRegion проверяют соответственно точку и прямоугольник на вхождение их в регион.

Регион может быть обведен или закрашен с использованием текущих инструментов данного контекста.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)