目录
1. 问题的提出
2. 问题解决
1. 问题的提出
今天通过一张像素为141 * 214,大小为426KB的svg格式的图片构造QGraphicsSvgItem对象,再通过Qt的Graphics View Framework框架,将QGraphicsSvgItem对象显示到场景视图上,代码如下:
#include <QElapsedTimer>
#include <QGraphicsSvgItem>
...... // 其它头文件略
...... // 其它代码略
auto pBatteryChargeGraphicsScene = new QGraphicsScene(this);
ui->graphicsView->setScene(pBatteryChargeGraphicsScene);
QElapsedTimer timer;
timer.start();
auto pPeiDianGuiComponent = new QGraphicsSvgItem(QStringLiteral(":/uavGuarantee/image/batteryChargeShelters/peidiangui.svg"));
qDebug() << "The slow operation took" << timer.elapsed() << "milliseconds";
pPeiDianGuiComponent->setPos(100, 100);
pBatteryChargeGraphicsScene->addItem(pPeiDianGuiComponent);
...... // 其它代码略
其中ui->graphicsView为QGraphicsView类对象,第13行竟然耗时6376毫秒,如下:
最要命的是程序一起来就需要加载QGraphicsSvgItem对象上百个,那就更慢了,十分影响用户体验。
2. 问题解决
用Adobe Photoshop打开svg图片,选择“文件->导出->导出为...”,如下:
在右侧“重新采样”下拉框中选择“两次线性”,然后单击右下角“导出”按钮,此时原来426KB的svg图片变为了10KB,然后改为加载此10KB的svg图片,效率提升很多,耗时如下:文章来源:https://www.toymoban.com/news/detail-827315.html
文章来源地址https://www.toymoban.com/news/detail-827315.html
到了这里,关于svg图片构造QGraphicsSvgItem对象耗时很长的问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!