【发布时间】:2021-07-12 16:53:10
【问题描述】:
我想避免复制/粘贴 4 次相同的操作,只更改字节(x0.R 到 x0.G 等每种颜色)。
我不确定在 C# (.NET 3) 中是否可行,但我知道不同语言中存在类似的东西(使用方法 "something".to_sym 的 ruby)。
我这里的代码有一个本地方法Blend(string color)。 x0 和 x1 是 Color 对象,当我调用 x0.R 对应于红色时返回一个字节,x0.G 对应于绿色等。
我试图让x0.color 能够工作,其中color 是一个字符串,可以是"R"、"G"、"B" 或"A"。
在 C# 中有没有办法将 x0."R" 转换为 x0.R?
private static Color Interpolate(Color x0, Color x1, float alpha)
{
float Blend(string color)
{
float z = (float) x0.color / 255 * (1- alpha) + alpha * (float) x1.color / 255;
return z;
}
// float r = (float) x0.R / 255 * (1- alpha) + alpha * (float) x1.R / 255;
return new Color(Blend("R"),Blend("G"),Blend("B"),Blend("A"));
}
编辑:我发现一种方法完全按照我从对象Color(Xna,不是 System.Drawings)中编写的方法插入 2 种颜色:
private static Color Interpolate(Color x0, Color x1, float alpha)
{
return Color.Lerp(x0,x1,alpha);
}
【问题讨论】: