Нет такой возможности указать графическому объекту рисовать в оттенках серого (afaik).
У вас есть три возможности:
1) Отрисовка закадрового изображения (что вы не делаете t want)
2) Сделайте скриншот вашего текущего результата рендеринга и преобразуйте его в оттенки серого и нарисуйте поверх текущего результата рендеринга (на мой взгляд, это не очень хорошее решение)
3) Tweak ваш текущий код рендеринга и преобразование всех используемых цветов в оттенки серого
Чтобы преобразовать цвет в оттенки серого, вы можете использовать этот код:
public Color ToGrayScaleColor(Color originalColor)
{
int grayScale = (int)((originalColor.R * .3) + (originalColor.G * .59) + (originalColor.B * .11));
return Color.FromArgb(grayScale, grayScale, grayScale);
}
Код найден и скорректирован с http://csharp-me.blogspot.com/2014/01/convert-color-to-gray-scale-in-c-c-sharp.html