作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
好吧,我正在尝试在许 multimap 像绘制程序中实现类似于“撤消”功能的功能。我遇到的问题是:我正在尝试在 QVector 中制作 QImage 对象的备份拷贝(最多存储 10 个最新的 QImage 拷贝用于备份),然后尝试在另一个函数中检索这些备份。问题是没有正确创建备份(因为当我尝试恢复备份图像时,没有任何反应)。我知道问题出在备份部分而不是恢复部分,因为当我备份一个带有红色背景的新临时图像时,它可以完美恢复..
这是备份功能代码:
imageBackups.append(image);
其中“图像”是我要备份的 QImage 对象..
这是一个备用备份(存储红色背景图像)- 我用它只是为了看看这个版本的备份是否有效,它确实有效:
QImage newImage(QSize(100,100), QImage::Format_RGB32);
newImage.fill(qRgb(255, 0, 0));
imageBackups.append(newImage);
这是恢复代码:
image =imageBackups.at(imageBackups.size()-1);
QPainter painter(&image);
painter.drawImage(QPoint(0,0),imageBackups.at(imageBackups.size()-1));
'image' 的定义与上面的 newImage 完全相同,除了在本例中为 800x400 的大小..
最佳答案
newImage 在超出范围时开始析构,我猜 append 正在做某种浅拷贝,它只存储对图像的引用。QT对一些对象做了自动引用计数,具体记不清了
尝试使用 new 创建 QImage 并将指针存储在 imageBackups 中(无论如何是一种更好的方法)。
像这样(注意 imageBackups 现在需要是一个 QIMage* 数组)
QImage pImage = new QImage(QSize(100,100), QImage::Format_RGB32);
pImage->fill(qRgb(255, 0, 0));
imageBackups.append(pImage);
关于c++ - 难以存储 QImage 然后恢复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119842/
我想模拟这个函数: function getMetaData(key) { var deferred = $q.defer(); var s3 = vm.ini
我是一名优秀的程序员,十分优秀!