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