image.fill(qRgb(255, 255, 255));
modified = true;
update();
这种代码可以清除image, 但你的调用相当于OnPaint或OnDraw,或DrawItem
所以平台的SDK会定时刷新的. 一般在10-60ms左右.
这是平台自动执行的.如果真的要清除, 就只有将painter置空了,这需要painter是global的.
还有一种方式,就是安装hook, 在调用paint message时,不处理它,或做清除处理.这好麻烦.
建议采用:
QImage newImage(newSize, QImage::Format_RGB32);
newImage.fill(qRgb(255, 255, 255));
QPainter painter(&newImage);
*image = bglImage.scaled(newSize, Qt::IgnoreAspectRatio, Qt::FastTransformation);
painter.drawImage(QPoint(0, 0), *image);
这样的绘制就比较灵活了, 可以随时清除.