java 颜色平滑渐变算法_Java平滑颜色过渡

假设我有两种颜色。

public final static Color FAR = new Color(237, 237, 30);

public final static Color CLOSE = new Color(58, 237, 221);

我如何从一种颜色过渡到另一种颜色而不浸入深色?

我想出了一些想法,例如

double ratio = diff / range; // goes from 1 to 0

int red = (int)Math.abs((ratio * FAR.getRed()) - ((1 - ratio) * CLOSE.getRed()));

int green = (int)Math.abs((ratio * FAR.getGreen()) - ((1 - ratio) * CLOSE.getGreen()));

int blue = (int)Math.abs((ratio * FAR.getBlue()) - ((1 - ratio) * CLOSE.getBlue()));

要么

double ratio = diff / range; // goes from 1 to 0

int red = (int) ((1 - (diff / range)) * FAR.getRed() + CLOSE.getRed() - FAR.getRed());

int green = (int) ((1 - (diff / range)) * FAR.getGreen() + CLOSE.getGreen() - FAR.getGreen());

int blue = (int) ((1 - (diff / range)) * FAR.getBlue() + CLOSE.getBlue() - FAR.getBlue());

但是不幸的是,它们都没有从一种颜色平稳过渡到另一种颜色。有人会知道如何在保持颜色明亮而不浸入深色的同时做到这一点,或者如何确保渐变过渡平滑而不是先变慢而不是先变快再变慢?

我真的不会提出任何公式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值