【问题标题】:QPainter drawing lines - configuring line softness (horizontal opacity gradient)QPainter 绘制线条 - 配置线条柔和度(水平不透明度渐变)
【发布时间】:2018-05-18 12:34:17
【问题描述】:

我正在寻找一种在使用 QPainter 绘制 QLine 元素时应用水平不透明度渐变的方法。简而言之,我希望能够使线条不透明度随着距离正在绘制的线条中心越远而降低。我想要达到的效果对应于很多图像编辑工具通常描述的画笔硬度。

这是一个示例图像,它比较了使用硬笔刷和软笔刷的线条:

这是绘制常规 QLine 的最小示例:

QPainter p;
p.setPen(QPen(Qt::black, 12, Qt::SolidLine, Qt::RoundCap));
p.drawLine(QPointF(0,0), QPointF(1024,1024));

我将如何以及在哪里配置我所描述的线条硬度?绘制 QLine 元素时是否有类似衰减属性的东西?

在文档中,我只能找到如何在设定点之间应用线性渐变的示例,这不是我想要的。

【问题讨论】:

    标签: qt qpainter


    【解决方案1】:

    那不是QPen 绘画,那是画笔绘画,就像在 Photoshop 中一样,而 Qt 并不真正支持开箱即用的此类功能。

    但它很容易实现,您需要一个画笔模板像素图,并且您只需在给定步骤沿着一条线在目标绘图设备上绘制该像素图。

    行插值部分已经回答here

    建议画笔模板是 8 位灰度QImage,然后您可以通过使用灰度值作为选择的纯色的 alpha 值轻松获得其彩色版本。 QImage 更可取,因为它提供单独的像素访问。这允许使用除硬笔和软笔之外的任何类型的画笔,包括某些艺术画笔。

    当然,如果您只需要一个软笔刷,您可以利用 Qt 现有的渐变直接生成所需的颜色,并跳过模板着色部分。

    【讨论】:

    • 谢谢!这听起来很合理。我从 Qt 论坛得到了另一个答案,我也会试一试。 forum.qt.io/topic/90841/…我一有结果就会编辑我的帖子。
    猜你喜欢
    • 2011-04-30
    • 2011-08-08
    • 2013-01-02
    • 2020-11-09
    • 1970-01-01
    • 2022-08-23
    • 2012-07-23
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多