public override void CPDrawImageDisabled (Graphics graphics, Image image, int x, int y, Color background) {
/*
Microsoft seems to ignore the background and simply make
the image grayscale. At least when having > 256 colors on
the display.
*/
if (imagedisabled_attributes == null) {
imagedisabled_attributes = new ImageAttributes ();
ColorMatrix colorMatrix=new ColorMatrix(new float[][] {
// This table would create a perfect grayscale image, based on luminance
// new float[]{0.3f,0.3f,0.3f,0,0},
// new float[]{0.59f,0.59f,0.59f,0,0},
// new float[]{0.11f,0.11f,0.11f,0,0},
// new float[]{0,0,0,1,0,0},
// new float[]{0,0,0,0,1,0},
// new float[]{0,0,0,0,0,1}
// This table generates a image that is grayscaled and then
// brightened up. Seems to match MS close enough.
new float[]{0.2f,0.2f,0.2f,0,0},
new float[]{0.41f,0.41f,0.41f,0,0},
new float[]{0.11f,0.11f,0.11f,0,0},
new float[]{0.15f,0.15f,0.15f,1,0,0},
new float[]{0.15f,0.15f,0.15f,0,1,0},
new float[]{0.15f,0.15f,0.15f,0,0,1}
});
imagedisabled_attributes.SetColorMatrix (colorMatrix);
}
graphics.DrawImage(image, new Rectangle(x, y, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imagedisabled_attributes);
}