QPainter绘图线 - 配置线条柔和度(水平不透明度渐变)

时间:2018-05-18 12:34:17

标签: qt qpainter

我正在寻找一种在使用QPainter绘制QLine元素时应用水平不透明度渐变的方法。简而言之,我希望能够使线条不透明度从正在绘制的线条中心越远。我想要实现的效果对应于许多图像编辑工具共同描述为画笔的硬度。

这是一个示例图像,用于将使用硬刷的线与柔软的刷线进行比较:

soft and hard line brush

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

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

我如何以及在何处配置我描述的线硬度?在绘制QLine元素时,是否存在类似于衰落属性的东西?

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

1 个答案:

答案 0 :(得分:2)

这不是... with open('yourFile', 'r') as numbersFile: nums = numbers.readlines() for num in nums: url = "http://www.example.com/No_" + num + "/.../" # do what you want to do with the url... 绘画,那是画笔绘画,就像说photoshop一样,Qt并不真正支持开箱即用的这种功能。

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

线性插值部分已经回答here

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

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