显示半透明圆圈的快速动画
Posted
技术标签:
【中文标题】显示半透明圆圈的快速动画【英文标题】:Fast animation for showing semi-transparent circle 【发布时间】:2014-08-03 07:39:27 【问题描述】:我正在使用 Qt for android 开发一个简单的测试应用程序。我试图通过显示半透明的圆圈来为屏幕上的每个用户触摸设置动画,例如将其半径从 0 增加到 100。
我在所有小部件之上添加了一个自定义 QLabel。我正在尝试通过使用自定义属性的 QPropertyAnimation 对其 QPixmap 进行更新来为其 QPixmap 设置动画
Q_PROPERTY(QRect circleGeometry READ getCircleGeometry WRITE setCircleGeometry)
二传手是:
void CircleLabel::setCircleGeometry(QRect circleGeometry)
QPixmap pixmap(this->size());
pixmap.fill(Qt::transparent);
QPainter painter(&pixmap);
painter.setOpacity(0.2);
painter.setPen(QPen(Qt::transparent));
painter.setBrush(QBrush(Qt::white));
painter.setRenderHint(QPainter::Antialiasing);
painter.drawEllipse(circleGeometry);
this->setPixmap(pixmap);
我明白了,setter 对于动画来说太重了,所以它在我的 android 设备上运行缓慢。 您能否建议我如何修改我的动画以使其快速流畅。
【问题讨论】:
【参考方案1】:所以...我的解决方案是在应用程序启动时创建一个 QPixmaps 向量,然后我的 CircleLabel::setCircleGeometry 将如下所示:
void CircleLabel::setCircleGeometry(int currentIdx)
this->setPixmap(preGeneratedPixmaps[currentIdx]);
【讨论】:
以上是关于显示半透明圆圈的快速动画的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 UINavigationController 过渡到 UITableView:动画期间的黑色半透明层