Проблема, на мой взгляд, в том, что вы вычислили rgb
. Вы складываете вместе значения, которые дают число от 0 до 3 * 255, что явно не соответствует ожидаемому вами методу. Вы должны будете рассчитать это так
int rgb = (int)color.R << 16 + (int)color.G << 8 + color.B;
, что должно быть эквивалентно этому (за исключением альфа-значения, которое вы не используете)
int rgb = color.ToArgb();
Наконец, как вы можете видеть в ответе Криса Хааса, вы можете пропустить этот шаг, преобразовав непосредственно в int.