如何通过Qt创建自定义文本(字形)动画

时间:2013-06-06 14:35:31

标签: qt animation qgraphicsview glyph qgraphicstextitem

我想用Qt为阿拉伯语和波斯语文本制作动态文本动画?你能帮帮我吗? 你可以看到我需要的一个例子。

信任样本 enter image description here

错误的样本 enter image description here

1 个答案:

答案 0 :(得分:3)

我建议使用以下类:QGraphicsSceneQGraphicsView来处理和显示图形,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();