Arithmetic operations on the byte (and short) give the result int. You must insert the entire expression in parentheses and do the following:
Color myColorMiddle = Color.FromRgb((byte)((Color1.R + Color2.R) / 2), (byte)((Color1.G + Color2.G) / 2), (byte)((Color1.B + Color2.B) / 2));
Your code will be cleaner if you extract it from a function:
byte Average(byte a, byte b) { return (byte)((a + b) / 2); }
Then your code looks like this:
Color myColorMiddle = Color.FromRgb(Average(Color1.R, Color2.R), Average(Color1.G, Color2.G), Average(Color1.B, Color2.B));
phoog source share