Смотрите, есть карта Seamap/ca39995i.sit . Она входит с стандартный пакет поставки Panorama. Есть классификатор s57navy.rsc который тоже входит в стандартный пакет поставки.
1) С помощью функции mapGetRscObjectKeyIncode( hRsc, “boylat_p1) получаем внутренний код объекта в классификаторе. Он равен 165, так?
2) С помощью функции mapGetRscObjectFunction(hRsc, incode) получаем номер функции отображения. Для данного объекта он равен 149, так? То есть то векторный объект imgvectorex, так?
3) С помощью функции res = mapGetRscObjectParameters( hRsc, incode) получаем сами параметры отображения, так?
4) Далее
IMGVECTOREX *vectorex;
IMGPOLYDESC *desc;
IMGVECTPOINT *point;
vectorex = (IMGVECTOREX*)res;// получили заполненную структуру. В поле Count лежит число фрагментов, описывающих знак,так? В данном примере оно равно 5, т.е знак состоит из 5 примитивов.
desc = &(vectorex->desc);// получили указатель на первый примитив, так?
point = desc->point;// получили указатель на массив точек из которых можно нарисовать Часть объекта,так?
POINT *points = new POINT[vectorex->Desc.count];// count= 600, то есть первый примитив сострит из 600 точек, так?
for(int i = 0; i < vectorex->Desc.count; i ++)
{
points[i].x = MKM2PIX(point[i].Hor);
points[i].y = MKM2PIX(point[i].Ver);
}
Так вот ,
при i = 0, (x,y) = (0;25)
При i = 1 , (x,y) = (31;4)
При i = 2 , (x,y) = (4;17989(!!!))
При i = 3 , (x,y) = (-1.07374e+06(!!!); 0)
Почему такие значения получаются?