一、概述
在自定义贝塞尔曲线中想绘制一个坐标轴。
二、步骤
2.1 新建一个类 PaintAxis 继承 QWidget
然后在界面上拖拽一个 widget,右键 widget 提升为 PaintAxis 。
2.2 重写 paintEvent 函数
- 绘制 x,y 轴线
- 绘制坐标刻度
- 绘制坐标值
三、代码
3.1 .h 文件
#ifndef PAINTAXIS_H
#define PAINTAXIS_H
#include <QWidget>
#include <QPainter>
#include <QDebug>
// @class 绘制坐标轴
// ----------------------------
class PaintAxis: public QWidget
{
public:
PaintAxis(QWidget *parent);
virtual void paintEvent(QPaintEvent *event);
/// @brief 设置为数学坐标系
void SetMathCoordinate(QPainter* painter);
/// @brief 恢复默认坐标系
void ResetDefaultCoordinate(QPainter* painter);
/// @brief 绘制坐标刻度
void PaintCoordinateCalibration(QPainter* painter);
/// @brief 绘制坐标值
void PaintCoordinateValue(QPainter* painter);
/// @brief 绘制两条坐标轴直线
void PaintCoordinateAxis(QPainter* painter);
private:
QPoint m_ptStartPos; // 起始点
int m_axisWidth; // 坐标轴的宽度
int m_axisHeight; // 坐标轴的高度
};
#endif // PAINTAXIS_H
3.2 cpp 文件
#include "paintaxis.h"
const int GRAPH_SCALE = 2; // 图的放大倍数
const int COORDINATE_CALIBRATION_LENGTH = 4; // 坐标刻度的长度
// ----------------------------------------------------
PaintAxis::PaintAxis(QWidget *parent) : QWidget(parent)
{
m_ptStartPos.setX(30)