ToArgb()
возвращает 32-разрядное целое число, то есть 4 байта, в которых каждый байт соответствует альфа, красному, зеленому и синему.Таким образом, для «красного» это будет
FF FF 00 00
, что переводится в десятичную -65,536 (я не уверен, почему вы получили -1).То, что вы хотите, это что-то вроде этого:
string hexcode = string.Format("{0:X2}{1:X2}{2:X2}", redColor.R, redColor.G, redColor.B);