#include "drawer.h"
#include <QPalette>
#include <QPainter>
#include <QtGui>
#include<QColor>
#include<iostream>
Drawer::Drawer(QWidget *parent) :
QWidget(parent)
{
myTimerId=0;
xpos=0;
pixel=-1; //负数证明向左移动
displayDatacharge=0;
displayDatalypos=0;
}
void Drawer::openDraw()
{
Close=false;
myTimerId=startTimer(5);//第一个时钟,返回1
}
void Drawer::closeDraw()
{
Close=true;
killTimer(myTimerId);
update();
}
void Drawer::drawGrid(QPainter &painter)//绘制网格
{
painter.setPen(Qt::green);
//定时绘制竖直方向的直线
//if(this->xpos==0||xpos%2==0)
// painter.drawLine(this->width()-0.5,-this->height(),this->width()-0.5,0);
xpos++;
// //不再绘制竖直和水平的线 而只是绘制y = 0
// painter.drawLine(0,-150,this->width(),-150);
//绘制水平方向的直线
for(int u=0;u<this->height();u++)
{
if(u%50==0)
{
painter.drawLine(0,-u,this->width(),-u);
}
}
//绘制竖直方向的直线
for(int t=0;t<this->width();t++)
{
if(t%50==0)
{
painter.drawLine(t,0,t,-this->height());
}
}
}
void Drawer::drawCurves(QPainter &painter)//绘制实时曲线
{
painter.setPen(Qt::black);
displayDatafypos=displayDatacharge;
displayDatacharge=displayDatalypos;
painter.drawLine(this->width()+this->pixel,-displayDatafypos,this->width(),-displayDatalypos);
}
void Drawer::paintEvent(QPaintEvent *)
{
QPainter paint(this);
paint.setBrush(Qt::white);//设置绘制背景的笔的颜色
paint.setViewport(0,0,this->width(),this->height());//设置视口,物理坐标
paint.setWindow(QRect(0,-this->height(),this->width(),this->height()));//设置窗口,逻辑坐标
paint.drawRect(0,-this->height(),this->width(),this->height());//绘制背景
if(Close!=true)
{
drawGrid(paint);
drawCurves(paint);
}
}
void Drawer::timerEvent(QTimerEvent *event) //当时钟周期定义是启动
{ int testpos ;
if(event->timerId()==myTimerId){
scroll(this->pixel,0);
testpos = *pPosition;
testpos = testpos/8388608/2;
testpos = testpos +150;
displayDatalypos=testpos; //数据的入口;
// displayDatalypos=rand()%150; //数据的入口;
}
else{
QWidget::timerEvent(event);}
}