Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.46 MB
Время: 0.032 c
1-1106676112
tazik
2005-01-25 21:01
2005.02.13
Как обратиться к объекту, если еасть его имя.


14-1106690642
Narik
2005-01-26 01:04
2005.02.13
Как всегда ВОПРОС!


14-1106351728
olookin
2005-01-22 02:55
2005.02.13
Любочка - наивная или нецензурная песня?


14-1106458331
guest_Dmitry
2005-01-23 08:32
2005.02.13
Вопрос по AdvStringGrid


1-1107083549
ТехникПТО
2005-01-30 14:12
2005.02.13
PChar в String





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский