作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发 wpf 应用程序。我在 C# 中有 Color 对象的实例。假设我有一个红色 Color 对象的实例,即 Color c = Color.FromArgb(255,255,0,0)
现在假设我有一个值,范围从 1 到 10。所以基于这个值我想要更改“c”对象的颜色。我想要 1 的浅红色和 10 的深红色。随着值从 1 增加,浅红色变成深色。我如何在 C# 中为 wpf 应用程序执行此操作?您能否提供我可以解决上述问题的任何代码或链接?
最佳答案
您可以尝试简单地将红色、绿色和蓝色分量乘以某个系数。
public static Color ChangeLightness(this Color color, float coef)
{
return Color.FromArgb((int)(color.R * coef), (int)(color.G * coef),
(int)(color.B * coef));
}
或者,如果您想使用 1 到 10 之间的整数值而不是系数:
private const int MinLightness = 1;
private const int MaxLightness = 10;
private const float MinLightnessCoef = 1f;
private const float MaxLightnessCoef = 0.4f;
public static Color ChangeLightness(this Color color, int lightness)
{
if (lightness < MinLightness)
lightness = MinLightness;
else if (lightness > MaxLightness)
lightness = MaxLightness;
float coef = MinLightnessCoef +
(
(lightness - MinLightness) *
((MaxLightnessCoef - MinLightnessCoef) / (MaxLightness - MinLightness))
);
return Color.FromArgb(color.A, (int)(color.R * coef), (int)(color.G * coef),
(int)(color.B * coef));
}
关于c# - 如何根据 wpf 中的值使特定颜色变暗或变亮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894605/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!