Визуализировать в GDI + только в оттенках серого - PullRequest
0 голосов
/ 12 января 2020

Я создаю приложение с функцией предварительного просмотра. Если принтер не поддерживает цвет, я хочу сделать все в оттенках серого. Я зависим от библиотек рендеринга 3P, в которых я не могу изменить цвет, который они отображают.

Не прибегая к рендерингу закадрового растрового изображения, а затем преобразовывая его в оттенки серого, и т. Д. c ... есть ли способ просто сказать GDI + для визуализации в оттенках серого?

1 Ответ

1 голос
/ 15 января 2020

Нет такой возможности указать графическому объекту рисовать в оттенках серого (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

...