Wal*_*oni 6 c# math wpf xaml colors
我想用两种颜色生成中间色:
Color Middle = Color.FromRGB(Color.FromRgb( Color1.R + Color2.R) / 2, (Color1.G + Color2.G) / 2, (Color1.B + Color2.B) / (2);
Run Code Online (Sandbox Code Playgroud)
此代码将无法编译,因为FromRGB()需要a byte.
所以我尝试了这个:
Color myColorMiddle = Color.FromRgb((byte)(Color1.R + Color2.R) / (byte)2, (byte)(Color1.G + Color2.G) / (byte)2, (byte)(Color1.B + Color2.B) / (byte)2);
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的错误.有人可以帮我吗?
对byte(和short)的算术运算产生一个int结果.你必须将整个表达式放在括号中并转换为:
Color myColorMiddle = Color.FromRgb((byte)((Color1.R + Color2.R) / 2), (byte)((Color1.G + Color2.G) / 2), (byte)((Color1.B + Color2.B) / 2));
Run Code Online (Sandbox Code Playgroud)
如果将其解压缩为函数,则代码将更清晰:
byte Average(byte a, byte b)
{
return (byte)((a + b) / 2);
}
Run Code Online (Sandbox Code Playgroud)
然后你的代码看起来像这样:
Color myColorMiddle = Color.FromRgb(Average(Color1.R, Color2.R), Average(Color1.G, Color2.G), Average(Color1.B, Color2.B));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |