На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Максим Казаровец (Автор тем)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Максим Казаровец
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 След.
Работа диалога rscShowStatisticObjectEx, rscCreateStatisticObject, rscChangeStatisticObject, Какие сообщения отправляются главному окну или окну карты
 
Здравствуйте, после обновления GTK Free 13 перестали быть активны кнопки вперед/назад в диалоге rscShowStatisticObjectEx. Попробовал переписать на вызов не модального окна с использованием rscCreateStatisticObject и rscChangeStatisticObject, диалог запускается, но кнопки, тоже, неактивны. Хотел уточнить: какие сообщения диалог отправляет окну карты? При использование rscCreateStatisticObject как определить момент закрытия диалога и какая реакция на выбор объекта пользователем? Версия GIS ToolKit Free 13.5.1.0. Из сообщений срабатывает только MS_ACTIVEOBJECT, MS_CHECKOBJECT и MS_NEXTOBJECT - не срабатывают.
Подключение к ГИС Сервер, при подключение к ГИС Серверу через диалог svOpenData постоянно пишет доступ запрещен
 
Здравствуйте. Использую GTK13Free v.13.4.4.1, работаю напрямую через mapapi, без использования компонентов, программно создаю один экземпляр mapview в дополнительной библиотеке - для обеспечения FREE. При попытке вызове диалога подключения к ГИС Серверу через svOpenData  постоянно пишет, что доступ пользователю запрещен. Параметры подключения проверял на Panaroma mini и GIS Operator - все работает. Что необходимо добавить, чтобы диалог нормально отрабатывал?
Отрисовка и сохранение больших изображений в файл, Использую для отрисовки mapPaintToXImage, необходим алгоритм деления на части изображения и записи в файл
 
Проблема следующая при отрисовки больших изображений требуется большой объем ОЗУ, есть ли какой-нибудь пример по делению области на части, отрисовки и сохранению в файл? Для отрисовки использую mapPaintToXImage с указанием необходимых параметров изображения, далее массив перевожу в QImage. У QImage тоже есть ограничение на ширину и высоту формируемого изображение(MAX_INT). Код для отрисовки использую такой
[CODE]void SaveAsPicDialog::SaveMap(int cx, int cy, int cw, int ch)
{
 if (!MapHandle)
     return;

 // Область отрисовки карты
 RECT rectDraw;
 rectDraw.left = cx;
 rectDraw.top = cy;
 rectDraw.right = cx + cw;
 rectDraw.bottom = cy + ch;


 if (BitMap)
 {
     memset(BitMap, 0x0, BitMapSize);

     XIMAGEDESC xImageDesc;
     xImageDesc.Point = BitMap;                     // Адрес начала области пикселов
     xImageDesc.Width = cw;                         // Ширина строки в пикселах
     xImageDesc.Height = ch;                        // Число строк
     xImageDesc.Depth = (cbBits->currentIndex()+1)*8;  // Размер элемента в битах (8,16,24,32), задаются из QCOmboBox
     xImageDesc.CellSize = xImageDesc.Depth/8;              // Размер элемента(пиксела) в байтах
     xImageDesc.RowSize = cw * xImageDesc.CellSize; // Ширина строки в байтах

     // Отобразим фрагмент карты на экран
     if (mapPaintToXImage(MapHandle, &xImageDesc, 0, 0, &rectDraw))
     //if (mapPaintByFrameToXImage(MapHandle, &xImageDesc, &Frame, cw, ch, 1))
     {
         // в зависимости от глубины цвета карты выставляем формат картинки
             QImage::Format format;
             switch (xImageDesc.Depth)
             {
                 case  8: format = QImage::Format_Indexed8; break;
                 case 16: format = QImage::Format_RGB16; break;
                 case 24: format = QImage::Format_RGB666; break;
                 case 32: format = QImage::Format_RGB32; break;
                 default: format = QImage::Format_Invalid; break;
             }
         QImage image((uchar *)BitMap, cw, ch, format);
         image.save(pathtofile);

     }
 }

}[/CODE]
Возможность изменить кнопки в диалоге formSeekObject на png, при разработке под разные платформы используем Qt, иконки на кнопках подгружаются либо на черном фоне, либо не подгружаются совсем
 
при разработке под разные платформы используем Qt. Для Windows - GTK free 13, для linux - ГИС Конструктор(точнее библиотеки из них). Иконки в диалоге formSeekObject на кнопках подгружаются либо на черном фоне, либо не подгружаются совсем. Или, может, кто подскажет как в qt работать с двойными изображениями, в которых есть enable/disable изображение кнопки? Есть ли возможность в этом диалоге поменять иконки на png?
Изменено: Максим Казаровец - 15.03.2021 13:35:39
mapPaintMapObjectToDib не рисует в буфер, При отрисовки объекта карты не рисуется в память
 
Здравствуйте, при разработке под Linux использую такой код для отрисовки иконок объектов в точке на карте. На linux все нормально отрабатывает, на Windows буфер пустой, где может быть ошибка? Версия GTK FREE 13.2.1.1.

[CODE]QIcon ListObjectDialog::getObjectIcon(HOBJ obj)
{
   RECT ClientRect;

   int ClientHeight = 64;
   int ClientWidth = 64;
    MAPDFRAME frame;
    mapObjectFrame(obj, &frame);
    mapPlaneToPicture(map, &frame.X1, &frame.Y1);
    mapPlaneToPicture(map, &frame.X2, &frame.Y2);
    double scale = ClientWidth/(abs(frame.X2 - frame.X1)*1.000000);
    double scale2 = ClientHeight/(abs(frame.Y2 - frame.Y1)*1.000000);
    if(scale2 < scale) scale = scale2;
    double oldscale = mapGetRealShowScale(map);
    long x = 0;
    long y = 0;
    if(mapObjectLocal(obj) == LOCAL_SQUARE) {
        scale = scale/2;
    }
    mapChangeViewScale(map, &x, &y, scale);



     mapObjectFrame(obj, &frame);
     DOUBLEPOINT _Center;
     _Center.X = 0.5*(frame.X1+frame.X2);
     _Center.Y = 0.5*(frame.Y1+frame.Y2);

     mapPlaneToPicture(map, &_Center.X, &_Center.Y);

     RECT rect;
    rect.LT = _Center.X - ClientWidth/2 ;
    rect.UP = _Center.Y - ClientHeight/2 ;
    rect.RT = rect.LT + ClientWidth;
    rect.DN = rect.UP + ClientHeight;

   XIMAGEDESC desc;
   memset((void*) &desc, 0, sizeof(desc));
   desc.Width = rect.right - rect.left;
   desc.Height = rect.bottom - rect.top;
   desc.Depth = 32;
   desc.CellSize = desc.Depth / 8;
   desc.RowSize = desc.Width * desc.CellSize;
   desc.Point = (char*) malloc(desc.Height * desc.RowSize);

   memset((void*) desc.Point, 0, desc.Height * desc.RowSize);
   mapPaintMapObjectToDib(map, desc.Point, desc.Width, desc.Height,
                          &rect, nullptr, obj);
   QImage im((const uchar*) desc.Point, desc.Width, desc.Height, desc.RowSize,
             QImage::Format_ARGB32);
   im = im.scaled(48, 48);

   mapSetRealShowScale(map, oldscale);
   free(desc.Point);

   return QPixmap::fromImage(im);

}[/CODE]
Отрисовка временных пользовательских объектов, Отрисовка пользовательских объектов в прикладных задачах со смещением и без
 
Здравствуйте! Тема много раз поднималась, хотелось бы все-таки обобщить как правильно отрисовывать пользовательские объекты в прикладных задачах написанных на PanApi используя mapapi функции ? Универсально, с возможностью использовать на Windows и Linux.
Исходные данные: имеется приложение с mdi окнами, карта в них рисуется по аналоргии с Вашим  классом(буфер выводиться в  XImage), интересует вопрос как правильно на событие paintEvent отрисовать в прикладной задачи произвольный объект. PaintEvent Mdi окна привожу ниже, здесь XCONTEXT context - глобальная переменная, в саму задачу он приходит но        
[CODE]int res = mapPaintOffsetMapObject95(HMap, dc.operator HDC(), &rect, &ObjectImage, Info, &delta, PP_PLANE);
       qDebug()<<res; всегда 0;[/CODE]При перемщение мышки объект рисуется через [CODE]mapViewOffsetMapObject(HMap, GetMapWindowHandle(),
                      &MapLeftTop, &ObjectImage, Info, &delta, PP_PLANE);[/CODE]тоже с подмигиваниями.
Пробывал в задачу передовать QImage ScreenImageBuffer и отрисовывать с помощью                  

[CODE]int res = mapPaintUserObjectToXImage(HMap, &ximage, 0, 0, &rect, &ObjectImage, &data, PP_PLANE); [/CODE]
Здесь возращается 1, но в метрику добавляю delta на смещение, на mousemove все рисуется со смещением, на Paint не рисует, как быть?

[CODE]void MdiChild::paintEvent(QPaintEvent *event){
   RECT rect =qrectToRect(event->rect());
   //qDebug() << event->rect();
   LONGPOINT pos;
   pos.x = horizontalScrollBar()->value();
   pos.y = verticalScrollBar()->value();
   VarHorzPos = pos.x;
   VarVertPos = pos.y;
#ifdef __linux
   memset(&context,0,sizeof(XCONTEXT));
   context.xcDisplay = QX11Info::display();
   context.xcWindow = this->viewport()->winId();
   context.xcContext = XCreateGC(context.xcDisplay, context.xcWindow, 0, NULL);
   context.xcPoint.X = 0;
   context.xcPoint.Y = 0;
   mdicontext = (HDC)&context;

#else
   mdicontext = this->viewport()->winId();
#endif
   mapWindowLink.OnPaintEx(mdicontext, 0, &pos, rect); // в linux HDC == HWND
   
} [/CODE]
Использование аналога GetCurrentModuleName, При создании кнопок предусмотрена передача в структуре TASKBUTTONINFO параметра HINSTANCE, как в linux по нему получить путь библиотеки?
 
При создании кнопок предусмотрена передача в структуре TASKBUTTONINFO параметра HINSTANCE, как в linux по нему получить путь библиотеки? Пока писал так, после обновления на крайний ГИС Конструктор перестало работать? Какие есть варианты получения пути? Под Windows пока не тестил код, так накидал.
[CODE] QString path = "";
       WCHAR Text[MAX_PATH_LONG] = {0};
#ifdef _WIN32
       ::GetModuleFileName((char*)but.hTask, Text, sizeof(Text));
       path = QString::fromUtf16(Text);
#elif __linux__
   link_map* map;
   dlinfo((void*)but.hTask,RTLD_DI_LINKMAP, &map);
   if(!map)
       return 0;
   path.append(*map->l_name);

   delete map;
#endif[/CODE]
Изменено: Максим Казаровец - 07.12.2020 15:42:11
Сборка прикладных задач под linux, Итересует кто как собирает прикладные задачи под Linux
 
Итересует кто как собирает прикладные задачи под Linux, написанные под c builder, это вообще возможно? Есть много прикладных задач написанных с использованием panapi и mapapi для windows платформы на c builder, сейчас столкнулись с неообходимостью разработки под linux системы, закупили ГИС Конструктор для qt, реализовали оболочку, загрузку и работу задач по panapi на qt, но теперь, получается, все задачи надо переписывать на qt? В той же легенде карты mapclass видел в объявления типа

#ifdef WIN32API
  #define HMESSAGE HWND
#else
  #define HMESSAGE MSGHANDLER
#endif
Вот и хотел узнать есть ли что-то, что позволит ускорить процесс миграции?

Изменено: Максим Казаровец - 31.03.2020 09:56:09
Диалоги в библиотеках ГИС Конструктора, какие диалоги уже есть в комплекте ГИС Конструктора
 
Здравствуйте, купили у Вас ГИС Конструктор для Centos 7, хотелось бы уточнить какие диалоги уже есть в библиотеках ГИС Конструктора и порядок их вызова, необходимо  решить какие диалоги разрабатывать самим, а какие возможно использовать Ваши? Спасибо.
Диалог выделения объектов карты, Не хватает кнопки "Выделить"
 
При использовании Вашего диалога long int   (WINAPI * selSetObjectsSearch)(HMAP , TASKPARM* , long int* ) в версии для CentOS GIS конструктор для Qt не хватает кнопки "Выделить", есть только кнопки "Найти", "Отмена", и "Сбросить". Если не сложно, добавьте пожалуйста с соответствующим возвратом.
Страницы: 1 2 3 4 5 След.



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности