Хорошо. Это трюк, который я использовал для медленного оборудования в старые времена. Обычно буфер изображения выделяется в два раза шире, чем нужно, с 1 дополнительной строкой в начале. Постройте изображение слева от буфера. Затем нарисуйте изображение несколько раз с буфером, продвигающимся на 1 пиксель за раз в буфере.
int w = 200;
int h = 100;
int rowBytes = w * sizeof(QRgb) * 2; // line buffer is twice as the width
QByteArray buffer(rowBytes * (h + 1), 0xFF); // 1 more line than the height
uchar * p = (uchar*)buffer.data() + rowBytes; // start drawing the image content at 2nd line
QImage image(p, w, h, rowBytes, QImage::Format_RGB32); // 1st line is used as the padding at the start of scroll
image.fill(qRgb(255, 0, 0)); // well. do something to the image
p = image.bits() - rowBytes / 2; // start scrolling at the middle of the 1st (blank) line
for(int i=0;i<w;++i, p+=sizeof(QRgb)) {
QImage scroll(p, w, h, rowBytes, QImage::Format_RGB32); // scrool 1 pixel at a time
scroll.save(QString("%1.png").arg(i));
}
Я не уверен, что это будет быстрее, чем просто изменить смещение изображения и нарисовать его в прямом направлении. Сегодняшнее аппаратное обеспечение действительно мощное, что делает многие старые приемы бесполезными. Но это забавно, играть неясные трюки. :)