Здравствуйте! Использую ГИС Конструктор 11.10.4 под AstraLinux 1.4.
Использую следующий код для изменения цвета объекта. [CODE]bool MapApi::flashObject(HOBJ hobj, long color, long win_id,
const QPoint& top_left_display)
{
try
{
if(!hobj)
throw std::runtime_error("Передан некоректный описатель объекта");
if(!win_id)
throw std::runtime_error("Передан некоректный описатель окна");
HMAP hmap = _core->getMapHandle();
if(!hmap)
throw std::runtime_error("Получен некорректный описатель карты");
IMGLINE img_obj;
memset(&img_obj,0,sizeof(IMGLINE));
img_obj.Color = color;
img_obj.Thick = PIX2MKM(3);
PAINTPARM image;
memset(&image,0,sizeof(PAINTPARM));
image.Image = IMG_OBJECT;
image.Mode = R2_COPYPEN;
image.Parm = (char*)(&img_obj);
XCONTEXT FxDC;
memset(&FxDC,0,sizeof(XCONTEXT));
FxDC.xcDisplay = QX11Info::display();
FxDC.xcWindow = win_id;
FxDC.xcContext = XCreateGC(FxDC.xcDisplay,FxDC.xcWindow,0,NULL);
FxDC.xcPoint.X = 0;
FxDC.xcPoint.Y = 0;
DOUBLEPOINT dp;
dp.x = top_left_display.x();
dp.y = top_left_display.y();
if(!_core->mapViewMapObject(hmap,(HWND)&FxDC,&dp,&image,hobj,PP_PICTURE))
throw std::runtime_error("Не удалось отрисовать объект");
}
catch(const std::runtime_error& err)
{
_error = err.what();
return false;
}
return true;
}
[/CODE]При этом для площадных и линейных объектов это не работает. Кто-то может сказать почему?