我可以在Qt中的角处用给定的颜色在矩形区域中构造颜色梯度吗



我有一个颜色值矩阵,它均匀地分布在网格上,中间有一些像素。类似这样的东西:

r _ _ g _ _ r ......
_ _ _ _ _ _ _ .....
_ _ _ _ _ _ _ ....
b _ _ r _ _ g ....
_ _ _ _ _ _ _ ....
_ _ _ _ _ _ _ ....
g _ _ b _ _ r ....
. . . . . . . ....
. . . . . . . ....
. . . . . . . .....

如何在Qt C++中构建/绘制/绘制颜色之间平滑过渡的渐变?我应该使用什么工具来实现这一点?

我觉得如果我在下面的矩形中插入颜色值,我可以对整个网格进行插值。-

r
_ _ 
g _ _ r
_ _
b

但是类QLinearGradient、QRadialGradient和QConicGradient在这种情况下似乎没有用处,因为它们只接受两点作为参数。

您可以使用双线性插值来计算每个单元格中点之间的颜色:

for any given point h find colors e and f
where r, g, and b chanel of e is equal to   
r(e) = r(a) + (r(b) - r(a)) * distance(a,e) / distance(a,b)
g(e) = ...
b(e) = ...
r(f) = r(c) + (r(d) - r(c)) * distance(c,f) / distance(c,d)
g(f) = ...
b(f) = ...
and then find r(h),g(h) and b(h) interpolating between e and f vertically
r(h) = r(e) + (r(f) - r(e)) * distance(e,h) / distance(e,f)
g(h) = ...
b(h) = ...
a-e---b
| h   |
| |   |
| |   |
c-f---d

最新更新