Qt绘制COS函数

2020-04-14 21:40:46 浏览数 (1)

Qt的绘图系统是极其强大的。下面来展示一下绘制自定义图形的大致绘图方式。

代码语言:javascript复制
void MainWindow::paintEvent(QPaintEvent *event)
{
//    paint = new QPainter(this);
//    paint->setPen(QColor(0,0,255));
//    paint->drawLine(30,30,300,300);
//    paint->drawRect(100,100,100,100);
//    paint->setPen((QColor(255,0,0)));
//    paint->drawEllipse(QPoint(300,300),50,50);
   
    QPainter my_paint(this);
    my_paint.setPen(QColor(0,0,255));           //画笔是用来画轮廓的
    my_paint.setBrush(Qt::blue);                     //画刷是用来填充轮廓的
    my_paint.setRenderHint(QPainter::Antialiasing);             //反走样
    my_paint.drawEllipse(QPoint(200,200),100,100);
    
    my_paint.translate(205,0);                          //这相当于把画笔移动到(405,200)这里做画。
    my_paint.setPen(QColor(0,255,0));           //画笔是用来画轮廓的
    my_paint.setBrush(Qt::green);                   //画刷是用来填充轮廓的
    my_paint.drawEllipse(QPoint(200,200),100,100);

    //QPainter什么都能画,无所不能。这也正是Qt绘图系统的强大之处。

    //绘制COS函数图像
    my_paint.translate(-400,50);
    my_paint.setPen(QColor(0,0,255)); 
    double num_x[1000] = {0.0};
    int num_y[1000] = {0};
    double encrease = 0.1;
    for(int i = 0;i < 1000;i  )
    {
        num_x[i]  = encrease;
        encrease  = 0.1;
    }
    for (int i = 0;i < 1000; i  )
    {
        num_y[i] = 15*cos(num_x[i]);
    }
    for (int i = 0;i < 1000; i  ) 
    {
        my_paint.drawPoint(i,400 num_y[i]);
    }
}

绘图效果如下所示:

上面代码展示的是大致的绘图思路。如果想画出来非常好看的图像,那么就需要精细的计算窗口尺寸和画点之间的关系。只有这样细致的比较计算之后才能画出来非常满意的图形。当然这也和采集的点的样本多少有极大的关系。

qt

0 人点赞