Форум: "WinAPI";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизКак извлечь многоугольник из структуры TEMRExtSelectClipRgn? Найти похожие ветки
← →
Pavlik_Morozov (2004-12-27 15:23) [0]Уважаемые господа!
Если кто-то сталкивался с данной проблемой и знает путь её решения, поделитесь, пожалуйста!
Суть проблемы:
1. есть EMF файл, имеющий регионы, которые создавались функцией CreatePolygonRgn и выбирались SelectClipRgn;
2. при "разбиении" EMF файла по функциям имею структуру (Windows.h):PEMRExtSelectClipRgn = ^TEMRExtSelectClipRgn;
{$EXTERNALSYM tagEMREXTSELECTCLIPRGN}
tagEMREXTSELECTCLIPRGN = record
emr: TEMR;
cbRgnData: DWORD; { Size of region data in bytes}
iMode: DWORD;
RgnData: array[0..0] of Byte;
end;
...
не могу понять, как извлечь набор TPoint"ов!?:(
← →
MBo © (2004-12-27 16:23) [1]function EnumProc(DC: HDC; lpHTable: PHANDLETABLE;
EMFR: PENHMETARECORD; nObj, lpData: Integer): Integer; stdcall;
...
var
recClip:PEMRExtSelectClipRgn;
PRgnD:PRgnData;
...
recClip:=PEMRExtSelectClipRgn(EMFR);
PRgnD:=PRgnData(@recclip.RgnData);
и дальше копаешься в RgnData
← →
Pavlik_Morozov (2004-12-27 16:39) [2]ок, спасибо!:)
← →
MBo © (2004-12-27 16:44) [3]P.S.
учти, что если регион непрямоугольный, данные региона будут содержать много прямоугольников - т.е. это не прямо тот многоугольник, из которого был создан регион.
← →
Pavlik_Morozov (2004-12-27 17:27) [4]ясно, thanks... а нет готовых алгоритмов "сборки" единого многоугольника из заданных прямоугольников?.. или просто грубо говоря беру все точки полученных прямоугольников (мне нужна ограничивающая область в виде массива (массивов) точек) ?
← →
MBo © (2004-12-27 17:48) [5]нет, готового нет.
Если регион без дырок, то алгоритм достаточно прост - берем верхний прямоугольник, записываем его левые и правые точки в список. Можно вести два списка, один из них задом наперед - так будет проще потом слить. Для следующего прямоугольника смотрим координаты и если x-координата не изменилась, заменяем в списке нижнюю точку предыдущего на нижнюю точку текущего, иначе добавляем.
← →
Pavlik_Morozov (2004-12-27 18:01) [6]большое спасибо за помощь...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c