Qt繪製COS函數

Qt的繪圖系統是極其強大的。下面來展示一下繪製自定義圖形的大致繪圖方式。

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]);
    }
}

繪圖效果如下所示:

上面代碼展示的是大致的繪圖思路。如果想畫出來非常好看的圖像,那麼就需要精細的計算窗口尺寸和畫點之間的關係。只有這樣細緻的比較計算之後才能畫出來非常滿意的圖形。當然這也和採集的點的樣本多少有極大的關係。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章