在C#中添加和分割颜色

我想用两种颜色生成中间色:
Color Middle = Color.FromrGB(Color.Fromrgb( Color1.R + Color2.R) / 2,(Color1.G + Color2.G) / 2,(Color1.B + Color2.B) / (2);

代码将无法编译,因为FromrGB()需要一个字节.

所以我尝试了这个:

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);

但我得到了同样的错误.有人可以帮我吗?

解决方法

对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));

如果将其解压缩为函数,则代码将更清晰:

byte Average(byte a,byte b)
{
    return (byte)((a + b) / 2);
}

然后你的代码看起来像这样:

Color myColorMiddle = Color.Fromrgb(Average(Color1.R,Color2.R),Average(Color1.G,Color2.G),Average(Color1.B,Color2.B));

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...