Qt使用C绘制函数图像
时间: 2023-09-20 10:11:19 浏览: 114
基于C++实现绘制已知函数的图像功能【100010824】
5星 · 资源好评率100%
在Qt中使用C绘制函数图像需要用到Qt的绘图类QPainter和绘图设备QPaintDevice,以及C语言的数学库math.h。
以下是一个简单的例子,绘制y = sin(x)的函数图像:
```c++
#include <QPainter>
#include <QPaintEvent>
#include <QWidget>
#include <math.h>
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = 0) : QWidget(parent) {}
protected:
void paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true); // 抗锯齿
painter.translate(width() / 2, height() / 2); // 将坐标系移动到中心点
// 绘制坐标轴
painter.drawLine(-width() / 2, 0, width() / 2, 0);
painter.drawLine(0, -height() / 2, 0, height() / 2);
// 绘制函数图像
painter.setPen(Qt::red);
painter.setBrush(Qt::NoBrush);
QPointF prevPoint;
for (int x = -width() / 2; x < width() / 2; x += 1)
{
double y = sin(x * M_PI / 180.0); // 计算y值
QPointF point(x, -y * 100); // 将y值乘以一个系数,使图像更清晰
if (x == -width() / 2)
prevPoint = point;
painter.drawLine(prevPoint, point);
prevPoint = point;
}
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();
return a.exec();
}
```
在paintEvent函数中,首先创建一个QPainter对象,并设置抗锯齿渲染。然后将坐标系移动到窗口中心点,绘制x轴和y轴。接着设置画笔为红色,将画刷设置为无,使用for循环计算并绘制函数图像。由于Qt使用的是角度制而非弧度制,所以在计算y值时需要将x乘以π/180转换为弧度。最后将y值乘以一个系数,使图像更清晰。
阅读全文