gpt4 book ai didi

c# - 如何确定给定颜色的深色或浅色变体?

转载 作者:IT王子 更新时间:2023-10-29 03:55:50 24 4
gpt4 key购买 nike

给定系统或用户的任何色调的源颜色,我想要一个简单的算法,我可以使用它来计算出所选颜色的较亮或较暗的变体。类似于 Windows Live Messenger 上用于设置用户界面样式的效果。

语言是 C# 和 .net 3.5。

回应评论: 颜色格式为 (Alpha)RGB。值为字节或 float 。

标记答案:对于我使用的上下文(一些简单的 UI 效果),我标记为已接受的答案实际上是该上下文中最简单的答案。但是,我也放弃了对更复杂和更准确的答案的投票。任何进行更高级颜色操作并在将来找到此线程的人都应该检查一下。谢谢。 :)

最佳答案

XNA there is the Color.Lerp static method这是两种颜色之间的差异。

Lerp 是两个 float 之间的数学运算,通过它们之间的差值的比率改变第一个值。

下面是一个扩展方法,可以对float 执行此操作:

public static float Lerp( this float start, float end, float amount)
{
float difference = end - start;
float adjusted = difference * amount;
return start + adjusted;
}

那么使用 RGB 的两种颜色之间的简单 lerp 操作将是:

public static Color Lerp(this Color colour, Color to, float amount)
{
// start colours as lerp-able floats
float sr = colour.R, sg = colour.G, sb = colour.B;

// end colours as lerp-able floats
float er = to.R, eg = to.G, eb = to.B;

// lerp the colours to get the difference
byte r = (byte) sr.Lerp(er, amount),
g = (byte) sg.Lerp(eg, amount),
b = (byte) sb.Lerp(eb, amount);

// return the new colour
return Color.FromArgb(r, g, b);
}

应用它的一个例子是这样的:

// make red 50% lighter:
Color.Red.Lerp( Color.White, 0.5f );

// make red 75% darker:
Color.Red.Lerp( Color.Black, 0.75f );

// make white 10% bluer:
Color.White.Lerp( Color.Blue, 0.1f );

关于c# - 如何确定给定颜色的深色或浅色变体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/97646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com