実験のコード片
void MainWindow::paintEvent(QPaintEvent *){
QPainter painter(this);
QTime timer;
QImage image(256, 256, QImage::Format_ARGB32);
QPixmap pixmap(QPixmap::fromImage(image));
timer.start();
for (int i = 0; i < 10000; ++i){
painter.drawImage(0, 0, image, 0, 0, 128, 128);
}
qDebug() << "QImage" << timer.elapsed();
timer.start();
for (int i = 0; i < 10000; ++i){
painter.drawPixmap(0, 0, pixmap, 0, 0, 128, 128);
}
qDebug() << "QPixmap" << timer.elapsed();
}
実行結果
WindowsXP。Windows7とかだとGDIのモデル変わってるから速度違うかもしれないね。
まあ比較的にはQImageのdrawはQPixmapの4倍程度遅い。