Отправляет email-рассылки с помощью сервиса Sendsay

Windows API

  Все выпуски  

Windows API


Информационный Канал Subscribe.Ru


Windows API. Уроки с сайта http://progs.biz

Рассылка № 15

Windows API. Урок 17. Создаем и закрашиваем регион.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 17. Создаем и закрашиваем регион.

Г. Шилдт. Самоучитель C++.
Г. Шилдт. Самоучитель C++
Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Обзор книг по программированию
Обзор новых книг по программированию. Включает книги как по традиционному программированию (Visual C++, Delphi, Visual Basic.NET, C#, Java,...), так и по WEB-программированию (JavaScript, PHP, ASP, ASP.NET, Perl,...). Кроме того, предлагается обзор книг по компьютерным сетям, безопасности, сертификации и др.

Windows API. Урок 17. Создаем и закрашиваем регион

Регионы позволяют нам работать с непрямоугольными областями. Использование регионов может быть самое разное - от создания непрямоугольных окон до определения, попали мы мышкой в некоторую непрямоугольную область (которая и будет задаваться регионом). На этом уроке мы посмотрим, как с помощью региона создать область неправильной формы и закрасить ее.

Вот код для рисования области, ограниченной некоторой ломанной:

LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
    ...
    // Создаем и заполняем массив точек.
    POINT pt[3] = {{10, 10}, {100, 10}, {20, 120}};
    ...
    switch (Message){
        case WM_PAINT:
            hdc = BeginPaint(hwnd, &ps);
            // Объявляем и создаем рагион на основе массива точек.
            HRGN rg;
            rg = CreatePolygonRgn(pt, 3, WINDING);
            // Заполяем регион желтым цветом.
            FillRgn(hdc, rg, CreateSolidBrush(RGB(255, 255, 0)));
            EndPaint(hwnd, &ps);
            break;
...

Результатом выполнения программы будет желтый треугольник.

Схема созадния региона такая - сначала создаем массив точек. Это будут вершины нашего региона. Потом путем вызова API-функции CreatePolygonRgn создаем на основе этого массива точек регион. Параметры у этой API-функции такие: первый - адрес массива точек (мы передаем имя массива, но это как раз и есть адрес), второй параметр - сколько всего у нашего региона вершин (три в нашем случае) и, наконец, третий параметр задает способ раскраски региона. Для треугольника в нашем случае это все равно. Если же количество вершин больше или равно пяти и наша ломаная имеет самопересечения, то разные значения для третьего параметра будут давать разные эффекты. Например, при задании следующего массива точек:

POINT pt[5] = {{10, 30}, {100, 30}, {20, 120}, {50, 0}, {100, 100}};

и при значении для третьего параметра WINDING:

rg = CreatePolygonRgn(pt, 5, WINDING);

мы получим закрашенную внутри звезду.

А если третий параметр мы установим в ALTERNATE:

rg = CreatePolygonRgn(pt, 5, ALTERNATE);

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

Наверх

PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка .NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru
Copyright Алексеев Игорь, 2002-2004
Copyright сайт progs.biz, 2002-2004
Распространение материалов без разрешения владельцев авторских прав запрещено.


BannerDrive.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное