如果给我颜色 A 和颜色 B,如何才能避免在 Canvas 上生成渐变,然后将其转换为位图。
这样
公共(public)位图 makeGradient(颜色从,颜色到){}
真的有用吗?
我希望这不是太含糊。我感谢您付出的时间和精力。
诗。 stackoverflow 上有一个问题可以回答这个问题,但我仍然很困惑:(
最佳答案
创建径向渐变的一种方法可能是定义焦点以及渐变的范围,当您生成图像时,您将计算当前像素和焦点之间的距离,将其除以通过梯度范围并将结果剪裁为 1。然后使用您链接的问题中的公式。
像这样的伪代码:
double d = distance(currentPixel, focusPoint); //I'll leave the implementation for you
double factor = Math.max(1.0, d/extent);
int red = (int) (firstCol.getRed() * factor + secondCol.getRed() * (1.0 - factor) );
int green= (int) firstCol.getGreen() * factor + secondCol.getGreen()* (1.0 - factor) );
int blue = (int) (firstCol.getBlue() * factor + secondCol.getBlue()* (1.0 - factor) );
这意味着像素距离焦点越远,firstCol
对它的贡献就越大(超出渐变范围的像素将仅使用 firstCol
> 因为 factor
对于这些来说应该是 1.0
)。
关于java - 梯度算法..它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8847384/