Варианты Вариант 1 (тот который Вы хотите)
Код |
---|
procedure TForm1.Button1Click(Sender: TObject);
var obj : HObj;
mark : TIMGMARK; // описание объекта типа "точка"
{
где
TIMGMARK = packed record // (137) ТОЧЕЧНЫЙ РАСТРОВЫЙ ОБ'ЕКТ (size = 16 + 128 = 144)
Color : TColor; // Цвет знака
Size : cardinal; // Размер в микронах (для печати)
PosV : cardinal; // Точка привязки знака PosV,PosH < Size
PosH : cardinal; // (для IMGSQUAREMARK - шаг сетки >= Size
case byte of
0: (Bits : array [0..127] of byte); // Растровое изображение 32x32 с верхнего угла
1: (Rows : array [0..31] of Cardinal);
end;
}
begin
FillChar(mark, sizeof(TIMGMARK), 0); // чистим
mark.Color := clRed; // устанавливаем цвет ТУТ МЕНЯЕТСЯ ЦВЕТ !
mark.Size := 5000; // устанавливаме размер в микрона - это 5 мм на карте
mark.PosV := 0; mark.PosH := 0; //точка привязки знака в 32х32 битной матрице
mark.Rows[0] := $F0FF0000; // первая строка рисунка
mark.Rows[1] := $10800000; // вторая строка рисунка
mark.Rows[2] := $10800000;
mark.Rows[3] := $10800000;
mark.Rows[4] := $10800000;
mark.Rows[5] := $F0FF0000; // крайняя строка рисунка
obj := mapCreateSiteObject(MapScreen1.MapHandle, MapScreen1.MapHandle); // создаём объект на карте
mapRegisterDrawObject(obj, 0, OL_MARK); // регистрируем его в системном слое как точка
mapAppendDraw(obj, IMG_MARK, @mark); // присоединяем наше описание
mapAppendPointPlane(obj, 6215000, 7444000, 0); // добавляем точку метрики (это верхниё левый угол карты Ногиснка из примера)
mapCommitObject(obj); // записываем на карту
mapFreeObject(obj); // освобождаем болванку
MapScreen1.Repaint; // переписовка
end; |
Вариант 2Берём описание объекта из классификатора
Код |
---|
var obj : HObj;
rsc : HRsc;
parm : TIMGSUBPRIMITIVE; // тип - объединённый указатель примитивов
func, incode : integer;
begin
Rsc := mapGetRscIdent(MapScreen1.MapHandle, MapScreen1.MapHandle);
incode := mapGetRscObjectCodeByNumber(Rsc, 31332000, OL_MARK, 1); // скалы надводные берём номер объекта в классфикаторе
func := mapGetRscObjectFunction(Rsc, incode); // берём код функции отрисовки
parm.Address := mapGetRscObjectParameters(Rsc, incode); // берём описание (тот PARM который Вы спрашивали в стартпосте)
obj := mapCreateSiteObject(MapScreen1.MapHandle, MapScreen1.MapHandle); // создаём объект на карте
mapRegisterDrawObject(obj, 0, OL_MARK); // регистрируем его в системном слое как точка
mapAppendDraw(obj, IMG_MARK, @mark); // присоединяем наше описание
mapAppendPointPlane(obj, 6215000, 7444000, 0); // добавляем точку метрики (это верхниё левый угол карты Ногиснка из примера)
mapCommitObject(obj); // записываем на карту
mapFreeObject(obj); // освобождаем болванку
MapScreen1.Repaint; // переписовка
end; |
Вариант 3Работа с обычным объектом
Код |
---|
var obj : HObj;
begin
obj := mapCreateSiteObject(MapScreen1.MapHandle, MapScreen1.MapHandle); // создаём объект на карте
mapRegisteObject(obj, 31332000, OL_MARK); // регистрируем его в системном слое объект классификатора
mapAppendPointPlane(obj, 6215000, 7444000, 0); // добавляем точку метрики
mapAppendSemanticLong(obj, 31002, $000000FF); // через служебную семантику "ЦВЕТ" назначаем объекту цвет (это красный)
mapAppendSemanticLong(obj, 31001, 80); // через служебную семантику "РАСТЯЖЕНИЕ в %" сжимаем его до 80%
mapCommitObject(obj); // записываем на карту
mapFreeObject(obj); // освобождаем болванку
MapScreen1.Repaint; // переписовка
end; |
Какой вариант приемлем Вам - придётся выбирать самому =)