Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с регионами!

520
15 марта 2007 года
inkognitum
155 / / 03.05.2006
Добрый день!
Есть функция которая создает регион по массиву точек.

ктонить подскажет, а есть ли возможность обратной конвертации?
т.е. получить список точек вершин региона!

Заранее спасибо.
263
15 марта 2007 года
koltaviy
816 / / 16.12.2004
Думаю, вот это тебе поможет:
 
Код:
DWORD GetRegionData(
  HRGN hRgn,
  DWORD dwCount,
  LPRGNDATA lpRgnData
);
520
15 марта 2007 года
inkognitum
155 / / 03.05.2006
Цитата: koltaviy
Думаю, вот это тебе поможет:
 
Код:
DWORD GetRegionData(
  HRGN hRgn,
  DWORD dwCount,
  LPRGNDATA lpRgnData
);



Извиняюсь конечно, а поподробнее можно?
Посмотрел один пример в инете, не понял как получить точки :)

С уважением.

263
15 марта 2007 года
koltaviy
816 / / 16.12.2004
Цитата: inkognitum
Извиняюсь конечно, а поподробнее можно?
Посмотрел один пример в инете, не понял как получить точки :)

С уважением.


Блин, значит не там смотрел!!
http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemdrawingregionclassgetregiondatatopic.asp

Создай какой-нибудь простенький региончик и посмотри, что в себе содержит lpRgnData->Buffer.
Вот тебе пример вдогонку;)

Код:
..
HRGN hRgn;
RGNDATA *prgd;
DWORD size;
RECT *prc;
 
hRgn = CreateEllipticRgn(10, 20, 30, 40);
 
size = GetRegionData(hRgn, 0, NULL);
 
if (size > 0)
{
  prgd = (RGNDATA*)malloc(size);
 
  GetRegionData(hRgn, size, prgd);
 
  for (int i = 0; i < prgd->rdh.nCount; i++)
  {
     prc = (RECT*)(prgd->Buffer) + i;
     printf("%3d: (%3d, %3d, %3d, %3d) \n", i, prc->left, prc->top, prc->right, prc->bottom);
  }
  free(prgd);
}
..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог