// gimage.hclass GImage : public QImage{public: GImage(int width = 640, int height = 480, Format format = QImage::Format_ARGB32_Premultiplied); ~GImage(); void drawGImage();};// gimage.cppvoid GImage::drawGImage(){ uchar *ch = bits();// передвигаю картинку вверх на строку for (int i = 0; i < height()-1; ++i) for (int j = 0; j < width(); ++j) ((int*)ch)[i * width() + j] = ((int*)ch)[(i+1)*width()+j];// добавляю новую строку for (int i = 0; i < width(); ++i) if (qrand()%3 != 0) ((int*)ch)[(height()-1) * width() + i] = (int) qRgb(0,0,255); else ((int*)ch)[(height()-1) * width() + i] = (int) qRgb(255,255,0);}// gplotter.hclass GPlotter : public QWidget{public: GPlotter(QWidget *parent = 0); ~GPlotter();protected: void paintEvent(QPaintEvent *event); void timerEvent(QTimerEvent *event);private: GImage im; // собственно буфер для отрисовки};// gplotter.cppGPlotter::GPlotter(QWidget *parent): Widget(parent){ setFixedSize(im.width(), im.height()); startTimer(100); setAutoFillBackground(true); // эти строчки setAttribute(Qt::WA_OpaquePaintEvent,true); // не спасают ((}void GPlotter::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.drawImage(0,0,im); i++;}void GPlotter::timerEvent(QTimerEvent *event){ im.drawGImage(); update();}
d_y[0] = sin(phase) * (-1.0 + 2.0 * double(rand()) / double(RAND_MAX));
static int f=0; d_y[0] = f++ & 1 ? -1.0 : 1.0;
uchar *ch = bits();// передвигаю картинку вверх на строку for (int i = 0; i < height()-1; ++i) for (int j = 0; j < width(); ++j) ((int*)ch)[i * width() + j] = ((int*)ch)[(i+1)*width()+j];//...