DWORD GetRegionData(
HRGN hRgn,
DWORD dwCount,
LPRGNDATA lpRgnData
);
Работа с регионами!
Есть функция которая создает регион по массиву точек.
ктонить подскажет, а есть ли возможность обратной конвертации?
т.е. получить список точек вершин региона!
Заранее спасибо.
Код:
Цитата: koltaviy
Думаю, вот это тебе поможет:
Код:
DWORD GetRegionData(
HRGN hRgn,
DWORD dwCount,
LPRGNDATA lpRgnData
);
HRGN hRgn,
DWORD dwCount,
LPRGNDATA lpRgnData
);
Извиняюсь конечно, а поподробнее можно?
Посмотрел один пример в инете, не понял как получить точки :)
С уважением.
Цитата: 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);
}
..
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);
}
..