显示半透明圆的快速动画
Fast animation for showing semi-transparent circle
我正在为Android开发一个简单的Qt测试应用程序。我试图通过显示半透明的圆圈来动画用户在屏幕上的每次触摸,例如,它的半径从0增加到100。
我在所有小部件的顶部添加了一个自定义QLabel。我想通过使用QPropertyAnimation更新自定义属性
来使它的QPixmap动画化Q_PROPERTY(QRect circleGeometry READ getCircleGeometry WRITE setCircleGeometry)
setter为:
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设备上运行缓慢。你能告诉我如何修改我的动画,使它快速和流畅吗?
所以…我的解决方案是在应用程序启动时创建一个矢量QPixmaps,然后我的CircleLabel::setCircleGeometry将看起来像:
void CircleLabel::setCircleGeometry(int currentIdx)
{
this->setPixmap(preGeneratedPixmaps[currentIdx]);
}
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 如何在全屏模式下(在OpenGL中)使背景透明
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 当使用透明的std函数对象时,我们还需要写空的尖括号吗
- 如何使用cppcheck处理半相对包含路径
- 使用 GLUT 使用键停止动画?
- 半随机数生成C++
- OpenGL - 深度缓冲区在渲染半透明立方体时剪切掉不应该剪切的面
- Q3D表面:半透明QSurface3DSeries
- 如何在Qt中绘制半透明矩形
- 如何在 SDL2 中的不透明矩形之上绘制透明或半透明矩形
- QML:如何创建半透明/半透明的WebView元素
- Qt:如何使半透明,无窗,无铬窗口可拖动
- 如何在QT中使背景半透明
- 显示半透明圆的快速动画
- 在屏幕上放置一个半透明的标记(Windows XP)
- c++半透明窗口SDL
- Qt:重叠的半透明图形系统
- Qt显示透明动画gif
- 如何创建QPixmap的半透明副本