Qt如何具体实现线条笔锋效果的原理及示例代码详解?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1391个文字,预计阅读时间需要6分钟。
前言:之前写过一篇介绍Qt中绘制平滑曲线的两种方式的文章,文章在此。
本文详细介绍了绘制的原理和实现方式,那么,如果在平滑曲线上实现笔触效果怎么办呢?所谓的笔触效果是指什么呢?
前言
之前写过一篇文章介绍Qt中绘制平滑曲线的两种方式,文章在这里。这篇文章详细介绍了绘制的原理和实现方式,那么,如果要在此曲线上实现笔锋效果怎么做呢?
所谓的笔锋效果,就是钢笔书写抬笔时的笔尖,也就是说,绘制曲线抬笔时形成一个笔尖的效果。
话不多说,直接来看效果:
动画效果如下:
实现原理
要实现该效果,需要完成以下几个关键步骤:
1.每两个点形成一个贝塞尔曲线path进行绘制
2.最新的一条path绘制细线(笔锋最细处的宽度)
3.倒数第二条path绘制粗线(正常的线条宽度)
4.在两条path连接处补充点使其过渡平滑
接下来一步步的分析,首先第一条,每两个点形成一个贝塞尔曲线path进行绘制,这个比较简单,就不多讲了吧,也就是说,在move事件中,每来一个新点,就让该点和前一个点生成一个贝塞尔曲线,使用QPainterPath中的quadTo函数,之所以要用贝塞尔曲线,是为了解决折线问题,这个在前面的文章中已经介绍过了。这里就不重复说咯。
我们直接来看第二条: 最新的一个path绘制细线。
本文共计1391个文字,预计阅读时间需要6分钟。
前言:之前写过一篇介绍Qt中绘制平滑曲线的两种方式的文章,文章在此。
本文详细介绍了绘制的原理和实现方式,那么,如果在平滑曲线上实现笔触效果怎么办呢?所谓的笔触效果是指什么呢?
前言
之前写过一篇文章介绍Qt中绘制平滑曲线的两种方式,文章在这里。这篇文章详细介绍了绘制的原理和实现方式,那么,如果要在此曲线上实现笔锋效果怎么做呢?
所谓的笔锋效果,就是钢笔书写抬笔时的笔尖,也就是说,绘制曲线抬笔时形成一个笔尖的效果。
话不多说,直接来看效果:
动画效果如下:
实现原理
要实现该效果,需要完成以下几个关键步骤:
1.每两个点形成一个贝塞尔曲线path进行绘制
2.最新的一条path绘制细线(笔锋最细处的宽度)
3.倒数第二条path绘制粗线(正常的线条宽度)
4.在两条path连接处补充点使其过渡平滑
接下来一步步的分析,首先第一条,每两个点形成一个贝塞尔曲线path进行绘制,这个比较简单,就不多讲了吧,也就是说,在move事件中,每来一个新点,就让该点和前一个点生成一个贝塞尔曲线,使用QPainterPath中的quadTo函数,之所以要用贝塞尔曲线,是为了解决折线问题,这个在前面的文章中已经介绍过了。这里就不重复说咯。
我们直接来看第二条: 最新的一个path绘制细线。

