Java 梯度算法。它是如何工作的

Java 梯度算法。它是如何工作的,java,colors,bitmap,gradient,Java,Colors,Bitmap,Gradient,如果给我颜色A和颜色B,如何在画布上生成渐变,然后将其转换为位图 以致 公共位图生成渐变(颜色从,颜色到){ 真的有用吗 我希望这不是太含糊。我感谢你的时间和努力 还有一个关于stackoverflow的问题可以回答这个问题,但我仍然感到困惑:( 这里是:创建径向渐变的一种方法可能是定义焦点以及渐变的范围,当你生成图像时,你要计算当前像素和焦点之间的距离,除以渐变范围,并将结果裁剪为1。然后使用你要问的问题中的公式链接 类似这样的伪代码: double d = distance(currentP

如果给我颜色A和颜色B,如何在画布上生成渐变,然后将其转换为位图

以致

公共位图生成渐变(颜色从,颜色到){

真的有用吗

我希望这不是太含糊。我感谢你的时间和努力

还有一个关于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
,因为对于这些像素,
因子应为
1.0
).

请发布一个链接到你发现的另一个问题,并解释哪个部分让你困惑。我正在尝试创建一个带有焦点的径向渐变。Android似乎没有内置。链接到。我在Android部分的问题我对如何绘制这个问题感到困惑。因为焦点会导致正常的径向渐变相当倾斜,所以我无法设置一个clip/rect绘制。@bluejamesbond我可能误解了你,但焦点不是渐变的中心。你不画一个通常是矩形的图像吗?在这种情况下,你只需迭代像素并计算每个像素的渐变颜色。如果我误解了你,请澄清(可能通过发布一张你想要实现的图像)我的意思是这样的(我之前在android论坛上发布过,但没有人回答)@bluejamesbond看起来你想创建一个法线径向渐变,然后将其投影到另一个平面上,其法线将是向量的标准化版本(dx,dy,1)其中dx是梯度中心和x轴上焦点之间的距离,dy是y轴上的距离。我必须查找平面投影,所以你也可以这样做。你很可能会找到3D算法,但因为你在2D中工作,你可能能够简化方程(很像我简化了法向量,因为在2D情况下z是1)。我会进一步研究它,如果我有任何疑问,会给你发消息。