Should these two expressions result in colors which are roughly the same?
Color.FromArgb(255, 255, 255, (byte)0.25 * 255))
Color.FromScRgb(1.0f, 1.0f, 1.0f,
Try to use ColorFloatToByte method to have your desired results:
private static byte ColorFloatToByte(float val)
{
if (!(val > 0.0)) // Handles NaN case too
return (0);
else if (val <= 0.0031308)
return ((byte)((255.0f * val * 12.92f) + 0.5f));
else if (val < 1.0)
return ((byte)((255.0f * ((1.055f *
(float)Math.Pow((double)val, (1.0 / 2.4))) - 0.055f)) + 0.5f));
else
return (255);
}
Usage:
Color.FromArgb(255, 255, 255, ColorFloatToByte(0.25f)))
Color.FromScRgb(1.0f, 1.0f, 1.0f, 0.25f))