我可以在 Qt 的角上用给定的颜色在矩形区域中构造颜色渐变吗?
Can I construct a color gradient in a rectangular region with given colors at the cornes in Qt?
我有一个颜色值矩阵,颜色值均匀分布在一个网格中,中间有一些像素。像这样:
r _ _ g _ _ r ......
_ _ _ _ _ _ _ .....
_ _ _ _ _ _ _ ....
b _ _ r _ _ g ....
_ _ _ _ _ _ _ ....
_ _ _ _ _ _ _ ....
g _ _ b _ _ r ....
. . . . . . . ....
. . . . . . . ....
. . . . . . . .....
如何在 Qt C++ 中 construct/draw/paint 在颜色之间平滑过渡的渐变?我应该使用什么工具来实现这一目标?
我觉得如果我在下面的矩形中插值颜色值,我可以对整个网格进行插值。 -
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
我有一个颜色值矩阵,颜色值均匀分布在一个网格中,中间有一些像素。像这样:
r _ _ g _ _ r ......
_ _ _ _ _ _ _ .....
_ _ _ _ _ _ _ ....
b _ _ r _ _ g ....
_ _ _ _ _ _ _ ....
_ _ _ _ _ _ _ ....
g _ _ b _ _ r ....
. . . . . . . ....
. . . . . . . ....
. . . . . . . .....
如何在 Qt C++ 中 construct/draw/paint 在颜色之间平滑过渡的渐变?我应该使用什么工具来实现这一目标?
我觉得如果我在下面的矩形中插值颜色值,我可以对整个网格进行插值。 -
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