Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: CyclicBarrier от Март 12, 2014, 20:32



Название: Текст в кривую безье
Отправлено: CyclicBarrier от Март 12, 2014, 20:32
Можно ли как-то получить кривую безье описывающую текст?


Название: Re: Текст в кривую безье
Отправлено: _OLEGator_ от Март 13, 2014, 09:06
Не очень понятно, что значит "описывающую".
Если нужно векторизовать текст, то можно воспользоваться этим:
Код
C++ (Qt)
void QPainterPath::addText ( const QPointF & point, const QFont & font, const QString & text )


Название: Re: Текст в кривую безье
Отправлено: CyclicBarrier от Март 13, 2014, 12:54
Нужно текст перевести в кривые безье для сохранения в eps. Пытался сделать, что-то типа такого
Код:
	QPainterPath path;
QFont f(strFont, dSize);
path.addText(dX, dY, f, strText);

for (int i = 0; i < path.elementCount(); ++i)
{
QPainterPath::Element el = path.elementAt(i);
QString strX = QString::number(el.x);
QString strY = QString::number(el.y);

// Здесь непонятно, что делать дальше

}

как я понимаю нужно передавать полученные в цикле данные в QPainterPath? Если так то cubicTo принимает три точки, а quadTo две, а QPainterPath::Element cодержит только одну.
Вопрос, как мне из QPainterPath  вытащить кривые безье?


Название: Re: Текст в кривую безье
Отправлено: _OLEGator_ от Март 13, 2014, 13:39
Не могу сказать, что именно кривые Безье там.
QPainterPath::Element и будет содержать одну точку, надо смотреть по типу, что это за точка. Документация вообще рулит:
Код
C++ (Qt)
bool Element::isCurveTo () const
bool Element::isLineTo () const
bool Element::isMoveTo () const