Тема: Как узнать реальную ширину текста?

Нужно узнать сколько текст будет занимать в ширину зная его высоту и фонт. Использую MText.

Re: Как узнать реальную ширину текста?

Если без проверок на ошибки:

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());

Re: Как узнать реальную ширину текста?

> Александр Ривилис
А зачем создавать AcDbMText в куче, а не на стеке? В это есть какой-то тайный смысл?

Re: Как узнать реальную ширину текста?

Никакого тайного смысла нет. Привычка. :)

Re: Как узнать реальную ширину текста?

Подправил (и AcDbMText поместил в стек):

double GetMTextWidth(double txtHeight,char *txtContext, AcDbObjectId txtStyleId)
{
  AcDbMText pMtext;
  pMtext.setTextStyle(txtStyleId);
  pMtext.setTextHeight(txtHeight);
  pMtext.setContents(txtContext);
  return pMtext.actualWidth();
}

Re: Как узнать реальную ширину текста?

Большое спасибо. Мне это помогло.