qt中画出漂亮的函数曲线

qt中画出漂亮的函数曲线_第1张图片qt中画出漂亮的函数曲线_第2张图片qt中画出漂亮的函数曲线_第3张图片

  1. 准备画布,填充画布颜色为白色
//头文件中
private:
    Ui::Widget *ui;
    QImage image;
    QString line;
//实现文件中
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    line="";
    ui->setupUi(this);
    image=QImage(1200,1200,QImage::Format_RGB32);
    QColor backColor=qRgb(255,255,255);
    image.fill(backColor);
}

  1. 准备画家,先画出坐标轴
public:
    explicit Widget(QWidget *parent = nullptr);
    void Paint();
    void Connext();

//实现
void Widget::Paint()
{
    QPainter painter(&image);
    painter.setRenderHint(QPainter::Antialiasing,true);
    int pointx=450,pointy=450;
    int width=800,height=800;
    painter.drawRect(5,5,1200-10,1200-10);
    painter.drawLine(pointx-width/2+50,pointy,pointx+width/2+100,pointy);
    painter.drawLine(pointx,pointy-height/2,pointx,pointy+height/2);
}

  1. 描点,把点存储在队列中

描点时,横坐标根据你所给的表达式给出,比如如果是对数函数,从0.1开始往后给出10个左右横坐标。纵坐标需要根据表达式计算,我们只需要把表达式里面的x换成具体的值,就可以计算出纵坐标。

QListpoints=creatPoints(line);		//creatPoints()是一个函数,
返回需要的数据点,line就是输入的表达式。

//具体实现还有怎么计算数据点有些复杂,这里略过,若想尝试的话,可以自己自定义一些数据点。

4.根据所给点绘制曲线
这里要用到QPainterPath类,顾名思义,它可以根据你所给的点,一段一段的绘制曲线。

  QListpoints=creatPoints(line);
      QPainterPath path(points[0]);
      for(int i=0;i

这样大致思路就出来了。

你可能感兴趣的:(qt,qt绘图,qt,函数作图,qt绘图)