2013-06-06 5 views
4

Я хочу сделать динамическую текстовую анимацию с Qt для арабских и персидских текстов? Вы можете мне помочь? Вы можете увидеть пример того, что мне нужно.Как создать анимацию пользовательского текста (глифа) по Qt

Целевого образец enter image description here

неправильного образец enter image description here

+0

я могу сделать анимацию, но в арабских и персидских текстов буквы separated.some программист предложил мне использовать глиф, но я не знаю, как я должен это сделать –

ответ

3

Я предлагаю использовать следующие классы: QGraphicsScene и QGraphicsView для обработки и отображения графики, QGraphicsTextItem для отображения каждого символа, QGraphicsItemAnimation анимировать персонаж.

Я не знаю, как именно действует пример, который вы опубликовали, и какие преобразования применяются. Я написал простой пример. Здесь начальное вращение и перевод каждого элемента задаются случайным образом, а конечные позиции без какого-либо преобразования.

QString text = "test"; 
int current_width = 0; 
QFont font("", 30); 
QTimeLine *timeline = new QTimeLine(2000); 
foreach(QChar c, text) { 
    QGraphicsTextItem* item = scene.addText(c); 
    item->setFont(font); 
    item->adjustSize(); 
    item->setPos(current_width, 0); 
    current_width += item->textWidth(); 
    QGraphicsItemAnimation *animation = new QGraphicsItemAnimation; 
    animation->setItem(item); 
    animation->setTimeLine(timeline); 
    animation->setRotationAt(0, 360.0 * rand()/RAND_MAX); 
    animation->setTranslationAt(0, 100 * rand()/RAND_MAX, 
           100 * rand()/RAND_MAX); 
    animation->setRotationAt(1, 0); 
    animation->setTranslationAt(1, 0, 0); 
} 
ui.graphicsView->setScene(&scene); 
timeline->start(); 
+0

Спасибо вам большое за ваше решение, но это не практичный для арабских и персидских текстов, а буквы отпечатаны –

+0

Можете ли вы не пересекать 'QGraphicTextItem'? – RobbieE

 Смежные вопросы

  • Нет связанных вопросов^_^