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

Сергей (Автор тем)

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

Страницы: 1 2 3 След.
Изменение параметров шрифта у объекта
 
Добрый день.

Подскажите пожалуйста, можно ли как-то изменить параметры шрифта у текстового объекта?

Объект создается на пользовательской карте следующим образом:
[CODE]HOBJ hObj = mapCreateSiteObject(m_baseMapHandler, m_userMapHandler, IDDOUBLE2, 1);

res = (mapRegisterDrawObject(hObj, 0, LOCAL_TITLE) != 0);


IMGTRUETEXT trueTextParam;
const QFont textFont = textParams->font();
memset(&trueTextParam, 0, sizeof(IMGTRUETEXT));

UnicodeToString(textFont.family().utf16(), trueTextParam.FontName, sizeof(trueTextParam.FontName));

           

IMGTEXT &textParm = trueTextParam.Text;
{
   const QColor textColor = textParams->textColor();
   textParm.Color = RGB(textColor.red(), textColor.green(), textColor.blue());
}
{
   const QColor bgColor = textParams->backgroundColor();
   if (bgColor == Qt::transparent)
       textParm.BkgndColor = IMGC_TRANSPARENT;
   else
       textParm.BkgndColor = RGB(bgColor.red(), bgColor.green(), bgColor.blue());
}

textParm.ShadowColor = IMGC_TRANSPARENT;//RGB(255, 255, 255);
textParm.Height =  4000;
textParm.Weight = FW_NORMAL;
textParm.Outline = 0;
textParm.Align = FA_MIDDLE;
textParm.Service = 0;
textParm.Wide = UNIW_NORMAL;
textParm.Horizontal = textParams->isHorizontal() ? 1 : 0;
textParm.Italic = textFont.italic() ? 1 : 0;
textParm.Underline = textFont.underline() ? 1 : 0;
textParm.StrikeOut = textFont.strikeOut() ? 1 : 0;
textParm.Type = 0;
textParm.CharSet = RUSSIAN_CHARSET;
if (textParams->isStretched()) {
   textParm.Flag = IMGTEXT_SCALE;
//                mapSetObjectScale(hObj, 1);
}

char textChar [2048];
UnicodeToString(textParams->text().utf16(), textChar, sizeof(textChar));

// так не работает на сертифицированной версии на астре
//            mapPutTextUnicode(hObj, PanoramaUtils::ushortToWChar(params->titile().utf16()), 0);
mapPutText(hObj, textChar, 0);
mapPutTextVerticalAlign(hObj, qtAlignmentToPanoramaVertical(textParams->textAlignment()), -1);
mapPutTextHorizontalAlign(hObj, qtAlignmentToPanoramaHorizontal(textParams->textAlignment()), -1);

//            mapAppendDraw(hObj, IMG_TEXT, reinterpret_cast<const char *>(&textParm));
mapAppendDraw(hObj, IMG_TRUETEXT, reinterpret_cast<const char *>(&trueTextParam));

// ниже идет установка метрики


[/CODE]
Интересует вопрос, как например, изменить такие параметры этого созданного текстового объекта как: цвет текста, высоту шрифта, подчеркивание и т.п.?
Как изменить сам текст и выравнивание текста понятно, а вот с остальным - нет.

Заранее спасибо.
Про масштаб и отображение на экране
 
Добрый день.
У меня есть карта с базовым масштабом  1: 1 000 000. dpi монитора - 96.

Перед отрисовкой картинки настраиваю размеры экрана следующим образом:
[CODE] const double MM_IN_INCH = 25.4;
   
   const int DEFAULT_HARDCODE_DISPLAY_RESOLUTION = 96;
   const double printprecisionX = DEFAULT_HARDCODE_DISPLAY_RESOLUTION * 1000 / MM_IN_INCH;
   const double printprecisionY = DEFAULT_HARDCODE_DISPLAY_RESOLUTION * 1000 / MM_IN_INCH;

   mapSetScreenPrecisionEx(printprecisionX, printprecisionY);

   long x = 0L;
   long y = 0L;

   mapChangeViewScale(mapHandler, &x, &y, 1.0);


  /// .....

   // установка масштаба отображения 1:1 000 000
   mapSetViewScale(mapHandler, &x, &y, 1000000);
[/CODE]
Отображаю на экране в экранном виде в масштабе 1 : 1 000 000. Измеряю на мониторе расстояние между центром Твери и центром Москвы и получаю около 26.5 см.

Итого получается, что грубое расстояние между центром Твери и центром Москвы = 26.5 * 10 000 = 265 000 (м)  = 265 км. А на самом деле около 163 км, если верить Гугл- и Яндекс-картам.

В чем моя ошибка или что я делаю не так?

Спасибо.
Конфликт работы с Qt принтерами
 
Добрый день!

Версия ГИС Конструктор 11.03:
// Версия библиотеки MapAccess
// (если применяется "mapacces.h" и т.п.)
#define MAPACCESSVERSION  20130912

// Версия интерфейса MAPAPI и ядра библиотеки
#define MAPAPIVERSION  0x111015

Qt 5.5.1 AstraLinux 1.5 SE.

На компьютере, на котором осуществляется работа с картой принтер подключен через CUPS как клиент, т.е. сервис CUPS не запущен.

Если открыть файл проекта(.mpt) функциями mapOpenAnyData, mapOpenProject, mapOpenData, то информация об удаленных принтерах в QPrinterInfo возвращается невалидная(isNull() == true). Аналогично себя ведет и QPrintDialog.

Если открыть карту(.sit) из того же проекта с помощью функции mapOpenMap, mapOpenAnyData, то все работает без каких-либо проблем.

Тестовый пример могу приложить.

Можно это как-то излечить?

Спасибо.
Установка шрифта по имени
 
Добрый день!

Версия ГИС Конструктор 11.03:
// Версия библиотеки MapAccess
// (если применяется "mapacces.h" и т.п.)
#define MAPACCESSVERSION  20130912

// Версия интерфейса MAPAPI и ядра библиотеки
#define MAPAPIVERSION  0x111015

Пытаюсь добавить текст на пользовательскую карту со шрифтом, указанным в текстовом виде. Использую в качестве параметров отображения тип IMGTRUETEXT.


Проблема аналогичная той, что описана в данной ветке: [URL=http://gisweb.ru/forum/messages/forum2/topic6115/message42543/6115#message42543]"Как поменять шрифт"[/URL]. Название шрифта задаю, а рисуется постоянно одним и тем же шрифтом.

Спасибо.
Не открывается карта с русскими символами, Пу
 
Здравствуйте.

Не удается открыть карту, в пути которой есть русские символы.

Версия ГИС Конструктор 11.03:
// Версия библиотеки MapAccess
// (если применяется "mapacces.h" и т.п.)
#define MAPACCESSVERSION  20130912

// Версия интерфейса MAPAPI и ядра библиотеки
#define MAPAPIVERSION  0x111015
[CODE]long int errcode;
QString escapedPath = ...; //  "/tmp/Ногинск/Карта ногинска.sit";
// escapedPath.replace(QLatin1String(" "), QLatin1String("\\ ")); пробовал заменить проблеы на обратный слэш с пробелом, тоже не помогло
HMAP mapHandle = mapOpenAnyData(ushortToWChar(escapedPath.utf16()), 0, &errcode); // возвращает код ошибки, определенный следующим образом: #define IDS_FILE_NOT_FOUND   60007  // ФАЙЛ НЕ НАЙДЕН [/CODE]
Возможно эта проблема уже решена позже, судя по [URL=http://gisweb.ru/forum/messages/forum2/topic7923/message57861/7923#message57861]ответу на форуме.[/URL]
Если решена, то можно ли как-то другим способом открыть такую карту, не меняя версию библиотеки?

Спасибо.
Снова о зарамочном оформлении
 
Добрый день!
Нашел на форуме пост Александра Савелова о том, что для создания зарамочного оформления необходимо использовать функции из библиотеки frmapi:
[QUOTE][URL=http://gisweb.ru/forum/user/6910/]Александр Савелов[/URL] написал:
Здравствуйте!Для  создания объектов зарамочного оформления используются функции из  библиотеки frmapi.Обсуждение данной темы можно посмотреть в этой ветке  форума: [URL=http://gisweb.ru/forum/messages/forum2/topic9264/message69521/9264-funktsii-sozdaniya-zaramochnogo-oformleniya#message69521]http://gisweb.ru/forum/messages/forum2/topic9264/message69521/9264-funktsii-sozdaniya-zaramochnogo-o...[/URL] [/QUOTE]

Я использую версию ГИС Конструктор для Qt Designer 11.03(MAPAPIVERSION = 0x111015, MAPACCESSVERSION = 20130912), Qt 5.5.1, ОС Astra Linux 1.5 SE.
Есть ли в этой версии возможность создать зарамочное оформление, т.к. функций, которые описаны в вышеупомянутом посте я у себя не нашел?

Спасибо.
Создание линейного масштаба
 
Добрый день!

Подскажите пожалуйста, есть ли где-то пример, как создавать линейный масштаб, аналогичный тому, который сделан в примерах карты Подольска?

Есть ли какие-то особенности в зависимости от масштаба карты?

Спасибо.
Невалидный файл проекта qmapcomponents.pro
 
Невалидный файл проекта qmapcomponents.pro в исходниках для версии [URL=http://gisinfo.ru/download_linux?id=92]ГИС Конструктор для Qt Designer x64 (версия 12.6.1, Qt 4, Qt 5, платформа x64, ОС "Astra Linux Special Edition", релиз "Смоленск")[/URL] выложенной на вашем ресурсе.

Как минимум отсутствуют закрывающие скобки:
[CODE]eval (GIS_DOUBLE_QT == true ) {
 greaterThan(QT_MAJOR_VERSION, 4) {

[/CODE]После того, как я закомментировал этот код, а также использование designer для Qt5, т.к. почему-то не находит он у меня в астре этот модуль и попытался собрать, выдало следующие ошибки:
[QUOTE]g++ -c -m64 -pipe -O2 -D_REENTRANT -Wall -W -fPIC -DHIDE_3DSUPPORT -DHIDE_GISSERVER_SUPPORT -DHIDEMAXMIN -DQT_NO_DEBUG -DQT_PLUGIN -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/gisdesigner -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o qdmdlist.o qdmdlist.cpp
g++ -c -m64 -pipe -O2 -D_REENTRANT -Wall -W -fPIC -DHIDE_3DSUPPORT -DHIDE_GISSERVER_SUPPORT -DHIDEMAXMIN -DQT_NO_DEBUG -DQT_PLUGIN -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/gisdesigner -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o qdmdcmtw.o qdmdcmtw.cpp
qdmdcmtw.cpp:6:3: error: ‘PRIORMTRPARM’ does not name a type
make: *** [qdmdcmtw.o] Ошибка 1
[/QUOTE]
Изменено: Сергей - 23.10.2019 14:51:14 (Более детальное описание)
Способ задания объекта
 
Добрый день.

Подскажите пожалуйста, как сделать функционал, используя MAPAPI, аналогичный в Операторе, как "способ задания объекта":

[IMG WIDTH=535 HEIGHT=321]https://pixs.ru/images/2019/10/22/create_new-object_dialog.png[/IMG]

я создаю объект на карте используя функцию mapRegisterObjectByKey, а далее добавляю объекту метрику в точках клика.

Можете привести пример, как например, создать площадной объект с неким кодом 'xxxxx' в форме окружности с радиусом 1 км, например, и в форме прямоугольника по 2 точкам для наглядности.

Заранее спасибо.
Изменено: Сергей - 22.10.2019 18:10:21 (Вставил картинку, как ссылку на внешнем ресурсе. Не понял, как вставить картинку напрямую.)
Проблемы с отрисовкой карты в принтерном растровом виде
 
Добрый день.

Версия Гис Конструктор для Qt Designer(MAPAPIVERSION = 0x111015, MAPACCESSVERSION = 20130912).

Устанавливаю "принтерный растровый" вид отображения карты, но отображается явно экранный вид. Пример кода:
[CODE]// Устанавка "принтерного растрового" вида отображения карты
const auto r = mapSetViewType(mapHandler, VT_PRINTRST);
const auto rr = mapGetViewType(mapHandler);
qDebug () << Q_FUNC_INFO << "new value:" << rr << "old value:" << r; // rr=VT_PRINTRST

// вызов функции отрисовки
auto errCode = mapPaintToXImage(mapHandler, &imageDescr, 0L, 0L, &rectDraw);
qDebug() << Q_FUNC_INFO << mapGetViewType(mapHandler); // после вызова mapPaintToXImage mapGetViewType возвращает значение = VT_SCREEN[/CODE]Как отрисовать карту в принтерном виде?

Спасибо.
Изменено: Сергей - 22.10.2019 11:37:33 (растровый -> экранный вид)
Страницы: 1 2 3 След.



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

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