Qt画笔实现曲线
效果图:

void CurvePoint::paintEvent(QPaintEvent *event)
{
// 曲线上的点
static QList<QPointF> points = QList<QPointF>() << QPointF(10, 20) << QPointF(100, 100) << QPointF(200, 100)
<< QPointF(300, 100) << QPointF(330, 80) << QPointF(350, 70);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 2));
QPainterPath path(points[0]);
for (int i = 0; i < points.size() - 1; ++i)
    {
// 贝赛尔曲线
// 控制点的 x 坐标为 sp 与 ep 的 x 坐标和的一半
// 第一个控制点 c1 的 y 坐标为起始点 sp 的 y 坐标
// 第二个控制点 c2 的 y 坐标为结束点 ep 的 y 坐标
QPointF sp = points[i];
QPointF ep = points[i+1];
QPointF c1 = QPointF((sp.x() + ep.x()) / 2, sp.y());
QPointF c2 = QPointF((sp.x() + ep.x()) / 2, ep.y());
path.cubicTo(c1, c2, ep);
}
// 绘制 path
// //移动默认(0,0)到(40,130)
// painter.translate(40, 130);
painter.drawPath(path);
// 绘制曲线上的点
painter.setBrush(Qt::gray);
int ellipse_size = 4;
    for (int i = 0; i < points.size(); ++i) {
painter.drawEllipse(points[i], ellipse_size, ellipse_size);
QString text = QString::number(points[i].y());
QFontMetrics fm = painter.fontMetrics();
int height_font = fm.height();
int width_text = fm.width(text);
QPointF textPos(points[i].x()-(width_text/2), points[i].y()-(ellipse_size/2)-(height_font/2));
painter.drawText(textPos, text);
}
return QWidget::paintEvent(event);
}
Qt画笔实现曲线的更多相关文章
- 学习Qt Charts - 实时曲线
		
1.添加坐标轴 按照之前的一篇文章,先在工程中添加QChart.QChartView,代码如下: Dialog::Dialog(QWidget *parent) : QDialog(parent), ...
 - Qt画笔实现波形区域图
		
参考文章:https://blog.csdn.net/yuxing55555/article/details/79752978 效果图: void WareArea::paintEvent(QPain ...
 - Qt画笔实现折线图
		
参考:https://www.cnblogs.com/lsgxeva/p/7821550.html效果图: void BrokenLine::paintEvent(QPaintEvent *event ...
 - Qt绘制动态曲线
		
首先*.pro文件中加一句 QT += charts 然后 mainwindow.cpp文件如下: #include "mainwindow.h" #include "u ...
 - Qt绘图
		
Qt绘图的设置 QPainter::Antialiasing // 反锯齿 QPainter::TextAntialiasing // 文字反锯齿 QPainter::SmoothPixmapTran ...
 - QT QcustomPlot的简单使用
		
第一步.QcustomPlot是QT提供的一个第三方库,在使用前需要在QcustomPlot官网上进行下载. 第二步.把解压完的QcustomPlot压缩包中的qcustomplot.h和qcusto ...
 - Qwt 编译 配置 使用
		
QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类, ...
 - HTML5版的String Avoider小游戏
		
HTML5版的String Avoider小游戏 http://www.newgrounds.com/portal/view/300760 蛮简单也蛮考验耐心,从游戏起始点移动鼠标到终点位置,鼠标移动 ...
 - 【Qt编程】基于QWT的曲线绘制及图例显示操作
		
在<QWT在QtCreator中的安装与使用>一文中,我们完成了QWT的安装,这篇文章我们讲讲基础曲线的绘制功能. 首先,我们新建一个Qt应用程序,然后一路默认即可.这时,你会发现总共有: ...
 
随机推荐
- RedHat(Linux)下安装Python3步骤
			
1. 下载解压.$ wget https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz$ tar zxvf Python-3.4.1.tgz 2 ...
 - format格式化函数
			
注意:列表索引设置参数,‘0’是必须的.
 - [原][粒子特效][spark]事件action
			
深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html group调用action的地方: 可以看到使用action的可以是出生一次 ...
 - 学习笔记53—Wilcoxon检验和Mann-whitney检验的区别
			
Wilcoxon signed-rank test应用于两个related samples Mann–Whitney U test也叫Wilcoxon rank-sum test,应用于两个indep ...
 - 全排列问题Ⅰ(Java实现)
			
给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1 ...
 - vue-cli的webpack模板项目配置文件分析,配置信息详解
			
比较不错的一篇详解文章: 地址:http://blog.csdn.net/hongchh/article/details/55113751#comments
 - English trip V1 - B 21. On a busy day  忙碌的一天 Teacher:Taylor Key: at on in
			
In this lesson you will learn to tell the time. 说时间 课上内容(Lesson) at time; at 7:30; at midday; ...
 - 20181013xlVba年级成绩报表
			
Public Sub 高一成绩报表() Application.ScreenUpdating = False Application.DisplayAlerts = False Application ...
 - Practical Node.js (2018版) 第7章:Boosting Node.js and Mongoose
			
参考:博客 https://www.cnblogs.com/chentianwei/p/10268346.html 参考: mongoose官网(https://mongoosejs.com/docs ...
 - Confluence 6 创建一个空间
			
在 Confluence 中并不限制你可以创建多少空间.你可以选择为你每一个小组,项目都创建一个空间,或者你也可以将这 2 者混合在一起.所有的这些都基于你的需求来决定的. 每一个 Confluenc ...