Small toys - temperature collection project (8)

int a[2];
float b[maxlength+1];
void Widget::Paint_point(int *a)
{
    static int i=0;
    //qDebug()<<777;
   // qDebug()<<i;
    float num = a[0] + float(a[1])/100;
    b[i] = num;
    static float num_save = 0;
    QPainter painter(&image);
    painter.setRenderHint(QPainter::Antialiasing,true); //Antialiasing mode
    int pointx = 20, pointy = 270; //Corresponding to canvas, or corresponding to Widget
    int width = 450 - 20, height = 250;


    double xk = width/(maxlength - 0);
    double yk = height/(35 - 0);

    QPen pen,penPoint;

    if(i>=maxlength)
    {
        right_to(b);
        QColor backColor =qRgb(255,255,255); //background color
        image.fill(backColor);     //填
        pen.setColor(Qt::black);
        pen.setWidth(2);
        penPoint.setColor(Qt::blue);
        penPoint.setWidth(5);
        painter.drawLine(pointx,pointy,width+pointx,pointy); //Start and end point
        painter.drawLine(pointx,pointy,pointx,pointy-height);
        i = 0;
        num_save = b[0];
        while(i<maxlength-1)
        {
             qDebug()<<b[i];
             painter.setPen(penPoint);//Blue pen, used to mark each point
             painter.drawPoint(pointx+xk*i,pointy-b[i]*yk);
             if(i>=1)
             {
                 painter.setPen(pen);
                 painter.drawLine(pointx+xk*(i-1),pointy-num_save*yk,pointx+xk*i,pointy-b[i]*yk);
             }
             i++;
             num_save = b[i-1];
        }
        i++;
        num_save = b[i-1];
        qDebug()<<b[i];
    }else{
        //Draw the origin of the axis coordinate axis (35,270)
        painter.drawLine(pointx,pointy,width+pointx,pointy); //Start and end point
        painter.drawLine(pointx,pointy,pointx,pointy-height);

        pen.setColor(Qt::black);
        pen.setWidth(2);
        penPoint.setColor(Qt::blue);
        penPoint.setWidth(5);

        painter.setPen(penPoint);//Blue pen, used to mark each point
        painter.drawPoint(pointx+xk*i,pointy-b[i]*yk);
        if(i>=1)
        {
            painter.setPen(pen);
            painter.drawLine(pointx+xk*(i-1),pointy-num_save*yk,pointx+xk*i,pointy-b[i]*yk);
        }
        qDebug()<<b[i];
        i++;
        num_save = b[i-1];
    }
}
// move forward one place
void right_to(float *p)
{
    for(int i =0;i<maxlength;p++,i++)
    {
    //    qDebug()<<1;
        *p = *(p+1);
    }
}


The principle is quite simple, that is, the array is moved forward by one, the screen is cleared, and the drawing is redrawn. The difficulty is only in the overall implementation.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325774762&siteId=291194637