2016-10-05 4 views
0

У меня есть текст, напечатанный на моей консоли C# (много его), и мне интересно, какой будет самый простой способ изменить цвет текста сразу, не очищая консоль и не перепечатывая ее в новом цвете, вроде того, что тот же эффект, что и System (color ##), в C++ ... Спасибо заранее.Изменить текст консоли Цвет в C# после записи

ответ

1

Вы можете изменить выходной цвет консоли, используя Console.BackgroundColor и Console.ForegroundColor. После того, как вы закончите запись в новом цвете, используйте Console.ResetColor(), чтобы вернуться к значениям по умолчанию.

Изменение цвета после того, как факт является проблемой, поскольку у C# нет прямого способа читать текст в заданной позиции. Однако вы можете переписать его, если знаете, что именно существует, в другом цвете (сначала перепрыгивая на расположение с использованием метода Console.SetCursorPosition, а затем запись поверх исходного текста).

Если вы хотите быть как можно более эффективными, вам понадобится более высокий калибр в форме некоторых P/Invoke wizadry. Это довольно хорошо описано в принятом ответе на this similar question. В этом решении используется запись всего Console буфера сразу, что очень быстро.

+0

Я просто хотел сказать, что .NET действительно не был предназначен для консольных приложений на уровне, возможном с C++ и conio/stdio. – KeithS

+0

Решение P/Invoke выглядит блестящим ... стыдно, что я его раньше не видел ... Спасибо – Virtuoso

+0

Надеюсь, он сработает :-). Счастливое кодирование! –

Смежные вопросы