gpt4 book ai didi

WPF 颜色插值

转载 作者:行者123 更新时间:2023-12-02 06:45:40 24 4
gpt4 key购买 nike

我正在尝试根据调色板绘制 WPF 控件的背景,其中每种颜色都已分配了值(例如红色 = 0、深绿色 = 10、绿色 = 20、浅绿色 =30)和用户选择的值(例如25) 这将给出最终的颜色。我希望生成的颜色是 2 个最接近的颜色值之间的插值(例如,对于 25 的值,它应该给出绿色和浅绿色之间的颜色)

为此,我正在考虑在 WPF 中使用现有的 LinearGradientBrush;设置 GradientStops、offsets 并获得指定值的颜色。有没有办法做到这一点,或者我应该实现自己的颜色插值函数?

谢谢。

最佳答案

使用 LinearGradientBrush 听起来会产生一些开销。虽然没有知识。不过,颜色插值函数并不难编写。

为简单起见,我假设您的调色板具有可被 10 整除的值。

public static Color GetColor(int value)
{
int startIndex = (value/10)*10;
int endIndex = startIndex + 10;

Color startColor = Palette[startIndex];
Color endColor = Palette[endIndex];

float weight = (value - startIndex)/(float)(endIndex - startIndex);

return Color.FromArgb(
(int)Math.Round(startColor.R * (1 - weight) + endColor.R * weight),
(int)Math.Round(startColor.G * (1 - weight) + endColor.G * weight),
(int)Math.Round(startColor.B * (1 - weight) + endColor.B * weight));

}

如果定义的颜色不能被 10 整除,则查找开始和结束颜色的逻辑会稍微复杂一些。

关于WPF 颜色插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/790699/

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