// 1 - добавить в класс переменную
HSITE hTempSite;
// 2 - инициализация в конструкторе
hTempSite = 0;
// 3 - Освобождение в деструкторе
if (hTempSite)
{
mapCloseSiteForMap(hMap, hTempSite);
}
// 4 - Создание перед применением
if (!hTempSite)
{
// Создать временную карту в памяти
hTempSite = mapCreateTempSiteForMap(hMap, hMap, 1);
}
else
{
// Удалить все с карты
mapClearSite(hMap, hTempSite);
}
// 5 - Нанести полигон для выделения прямоугольника
HOBJ hobj = mapCreateSiteObject(hMap, hTempSite, IDDOUBLE2, 0);
// Зарегистрировать, как графический объект
mapRegisterDrawObject(hobj, 0, LOCAL_SQUARE);
// Запросить габариты документа
DFRAME dframe;
mapGetTotalBorder(hMap, &dframe, PP_PLANE);
// Внешний контур
mapAppendPointPlane(hobj, dframe.X1, dframe.Y1, 0);
mapAppendPointPlane(hobj, dframe.X2, dframe.Y1, 0);
mapAppendPointPlane(hobj, dframe.X2, dframe.Y2, 0);
mapAppendPointPlane(hobj, dframe.X1, dframe.Y2, 0);
mapAppendPointPlane(hobj, dframe.X1, dframe.Y1, 0);
// Внутренний контур (координаты выделяемого прямоугольника или любой области)
int subject = mapCreateSubject(hobj);
mapAppendPointPlane(hobj, x1, y1, subject);
mapAppendPointPlane(hobj, x2, y1, subject);
mapAppendPointPlane(hobj, x2, y2, subject);
mapAppendPointPlane(hobj, x1, y2, subject);
mapAppendPointPlane(hobj, x1, y1, subject);
// Добавить графические параметры (тут можно поиграться) - затуманить область вокруг прямоугольника
IMGPOLYGONGLASS parm;
parm.Color = 0x0808080;
parm.Bright = 50;
parm.Contrast = 50;
parm.Transparency = 50;
mapAppendDraw(hobj, IMG_POLYGONGLASS, (char*)&parm);
// Сохранить объект на временной карте
mapCommitObject(hobj);
mapFreeObject(hobj);
// 6 - перерисовать карту (дальше рамка будет сама рисоваться до очистки временной карты через mapClearSite(hMap, hTempSite) или запрет отображения временной карты)
|