Здравствуйте! Использую ГИС Конструктор 11.10.4 под AstraLinux 1.4.
Использую следующий код для изменения цвета объекта.
При этом для площадных и линейных объектов это не работает. Кто-то может сказать почему?
Использую следующий код для изменения цвета объекта.
Код |
---|
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; } |