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

Сергей (Все сообщения пользователя)

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 17 След.
Изменение параметров шрифта у объекта
 
[QUOTE]Павел Матвеев написал:
А Вы на какой версии работаете? Сегодня решил потестировать 13.1.0 и наблюдаю какие-то проблемы с преобразованием координат или с отрисовкой карты..[/QUOTE]
День добрый.

Я работаю пока все на старой версии:

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

// Версия интерфейса MAPAPI и ядра библиотеки
#define MAPAPIVERSION  0x111015
Изменение параметров шрифта у объекта
 
Пришлось пока сделать отрисовку текста средствами Qt. Но тут я столкнулся с проблемой, которую пока тоже не могу решить:
1. По клику на карте перевожу координаты из пикселей в геодезические координаты и сохраняю это значение, чтобы при зуммировании, казалось бы было проще восстановить габариты;
2. При отрисовке на том же масштабе перевожу назад из геодезических координат в пиксели и получаю разницу по сравнению с исходной точкой клика порядка 8 пикселей. Я что-то делаю не так или это нормально?

Спасибо.
Изменение параметров шрифта у объекта
 
Добрый день.

[QUOTE]Павел Матвеев написал:
1. Высота будет равна указанной только на базовом масштабе[/QUOTE]
Это я понимаю, хотя добиться этого пока не удалось

[QUOTE]Павел Матвеев написал:
2. Объект будет масштабироваться если указаны признаки масштабируемости и сжимаемости для объекта
[/QUOTE]

Подскажите пожалуйста, как это сделать?

У меня текстовый объект получилось заставить масштабироваться только при выставлении флаг:
[CODE]textParm.Flag = IMGTEXT_SCALE;[/CODE]А это неправильно, как я понял из обсуждения выше, т.к. этот флаг должен приводить только к растяжению текста по метрике.

Спасибо.
Изменение параметров шрифта у объекта
 
[QUOTE]Oleg Belenkov написал:
#define IMGTEXT_SCALE       1    // Признак растягивания по метрике (высота вычисляется)

Это означает, что значение высоты игнорируется. Метрика вписывается в габариты по координатам, что не совсем то, что Вы описываете.[/QUOTE]
Олег, я правильно понимаю, что если этот флаг не выставлен, то высота текста должна быть равна значению, указанному в поле textParm.Height и при изменении масштаба текст должен масштабироваться?

Спасибо.
Изменение параметров шрифта у объекта
 
[QUOTE]Oleg Belenkov написал:
Вы можете создать графический объект и указать требуемую высоту шрифта.[/QUOTE]
Добрый день.

В [URL=http://gisweb.ru/forum/messages/forum7/topic10550/message80000/10550-izmenenie-parametrov-shrifta-u-obekta#message80000]примере[/URL], указанном выше, я вроде это и делаю, но при печати он не соответствует тому размеру, который указывал.
Поэтому хочу понять, что я, возможно, делаю не так?

Повторюсь еще раз, что хочется на выходе:
1. На базовом масштабе карты нанести текст, например высотой 40 мм; (на вышеуказанном примере я это вроде как пытаюсь сделать)
2. При масштабировании карты чтобы он масштабировался; (textParm.Flag = IMGTEXT_SCALE; насколько я понимаю, это все же не то)
3. Чтобы после печати карты на базовом масштабе он был высотой 40 мм. (Пока при тех настройках текст при печати получается очень маленький в отличие с видом на экране. Если я рисую тот же текст средствами Qt с учетом dpi устройства, то все рисуется в соответствии с тем, как указывал. Параметры dpi устройства в ядро передаю и все вроде корректно применяется).

Но вот с текстом какая-то беда и пока никак не могу разобраться.

Заранее спасибо.
Изменение параметров шрифта у объекта
 
[QUOTE]Oleg Belenkov написал:
Можно удалить старые параметры и добавить новые.[/QUOTE]
Спасибо за ответ.

Может не совсем в этой ветке вопрос задаю, но подскажите пожалуйста, как создать надпись на примере кода из первого сообщения, чтобы при печати карты подпись была высотой 10 мм на базовом масштабе карты?

Заранее спасибо.
Изменено: Сергей - 04.03.2020 16:59:53 (уточнение по высоте)
Изменение параметров шрифта у объекта
 
Добрый день.

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

Объект создается на пользовательской карте следующим образом:
[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]
Интересует вопрос, как например, изменить такие параметры этого созданного текстового объекта как: цвет текста, высоту шрифта, подчеркивание и т.п.?
Как изменить сам текст и выравнивание текста понятно, а вот с остальным - нет.

Заранее спасибо.
Про масштаб и отображение на экране
 
[QUOTE]Oleg Belenkov написал:
Через функции MAPAPI-интерфейса. Взять 2 точки на горизонтальной прямой на расстоянии 1 см на экране [/QUOTE]
Спасибо за совет.
Про масштаб и отображение на экране
 
[QUOTE]Oleg Belenkov написал:
В MAPAPI-интерфейсе есть функции для различных высокоточных измерений.[/QUOTE]
Добрый день.

Меня в данном случае не интересует высокоточное измерение. Хотелось бы хотя бы какое-то приближенное значение, чтобы пользователь мог без дополнительных инструментов прикинуть расстояние. А тут получается разница в 100 км.

Как тогда можно оценить, какое расстояние в одном см на экране?

Спасибо.
Про масштаб и отображение на экране
 
Добрый день.
У меня есть карта с базовым масштабом  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 км, если верить Гугл- и Яндекс-картам.

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

Спасибо.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 17 След.



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

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