java - 梯度算法..它是如何工作的

标签 java colors bitmap gradient

如果给我颜色 A 和颜色 B,如何才能避免在 Canvas 上生成渐变,然后将其转换为位图。

这样

公共(public)位图 makeGradient(颜色从,颜色到){}

真的有用吗?

我希望这不是太含糊。我感谢您付出的时间和精力。

诗。 stackoverflow 上有一个问题可以回答这个问题,但我仍然很困惑:(

这是:Generating gradients programmatically?

最佳答案

创建径向渐变的一种方法可能是定义焦点以及渐变的范围,当您生成图像时,您将计算当前像素和焦点之间的距离,将其除以通过梯度范围并将结果剪裁为 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/

相关文章:

ios - 快速动画 UIView 背景颜色

java - Android更改错误验证文本字段的颜色

c++ - 捕获位图快吃RAM

c# - 字节数组或矩阵到 BitMap

java - 定义的参数评估顺序导致次优代码?

java - App Engine Java API 页面大小

java - 尝试执行databasehelper的delete方法时出现nullpointerexecption

java - 为 POST 请求创建自动递增的 json 对象以保存在数据库中

visual-studio - assembly :以不同颜色打印一条线

c++ - 从原始标题和图像数据创建位图