Тема: Как узнать реальную ширину текста?
Нужно узнать сколько текст будет занимать в ширину зная его высоту и фонт. Использую MText.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Как узнать реальную ширину текста?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Нужно узнать сколько текст будет занимать в ширину зная его высоту и фонт. Использую MText.
Если без проверок на ошибки:
static void GetMTextWidth(double txtHeight,char *txtContext, AcDbObjectId txtStyleId) { AcDbMText *pMtext = new AcDbMText(); pMtext->setTextStyle(txtStyleId); pMtext->setTextHeight(txtHeight); pMtext->setContents(txtContext); double w = pMtext->actualWidth(); delete pMtext; return w; }
Пример использования (с текущим текстовым стилем):
double HeightMtext = GetMTextWidth(10,"Строка 1\nСтрока 2\nСтрока 3...",acdbCurDwg()->textstyle());
> Александр Ривилис
А зачем создавать AcDbMText в куче, а не на стеке? В это есть какой-то тайный смысл?
Никакого тайного смысла нет. Привычка. :)
Подправил (и AcDbMText поместил в стек):
double GetMTextWidth(double txtHeight,char *txtContext, AcDbObjectId txtStyleId) { AcDbMText pMtext; pMtext.setTextStyle(txtStyleId); pMtext.setTextHeight(txtHeight); pMtext.setContents(txtContext); return pMtext.actualWidth(); }
Большое спасибо. Мне это помогло.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → Как узнать реальную ширину текста?
Форум работает на PunBB, при поддержке Informer Technologies, Inc