求enable=false时候灰度算法,这个图就是参考图,要效果与这个相同,或者非常相近的算法.
------解决方案--------------------
/// <summary>
/// 灰度处理。(对于菜单项图标,透明度还要加倍。)
/// </summary>
/// <param name="bmp">原始图像。</param>
/// <returns>灰度和透明度加倍的图像。</returns>
public static Bitmap ToGray(Bitmap bmp)
{
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
//获取该点的像素的RGB的颜色。
Color color = bmp.GetPixel(i, j);
//利用公式计算灰度值。
int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);
//菜单不可用时,还要将图片的透明度加倍。
Color newColor = Color.FromArgb((int)(color.A * .5), gray, gray, gray);
//Color newColor = Color.FromArgb(color.A,gray, gray, gray);
bmp.SetPixel(i, j, newColor);
}
}
return bmp;
}