Работа с консолью в C#. Работа с буфером консоли

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Всё окно консоли можно разделить на строки и столбцы, которые в совокупности представляют собой буфер консоли. То есть, условно, всё окно консольного приложения можно представить как сетку в каждой ячейке которой может помещаться ровно один символ. Мы можем управлять этим буфером, позволяя, например, помещать в строке окна консоли большее или меньшее количество символов. Сегодня разберем основные свойства класса Console для работы с буфером.

Ширина и высота буфера консоли

Чтобы получить или изменить размер ширины или высоты буфера консоли мы должны использовать два свойства: BufferWidth (ширина буфера в столбцах) и BufferHeight (высота буфера в строках). Значения этих свойств могут изменяться при изменении размера окна консоли. Рассмотрим следующий пример:

Console.WriteLine($"Ширина буферной области {Console.BufferWidth}");
Console.WriteLine($"Высота буферной области {Console.BufferHeight}");

Console.ReadKey();

Console.WriteLine($"Ширина буферной области {Console.BufferWidth}");
Console.WriteLine($"Высота буферной области {Console.BufferHeight}");

Запустим приложение, затем изменим размер окна и нажмем любую клавишу на клавиатуре. В итоге увидим два размера буфера консоли. Например, к меня получились следующие данные:

Ширина буферной области 120
Высота буферной области 9001
Ширина буферной области 52
Высота буферной области 9001

Используя данные о размерах буфера можно организовать, например, вывод текста строго по центру окна.  Рассмотрим следующий пример:

//количество строк буфера равно высоте окна консоли
Console.BufferHeight = Console.WindowTop + Console.WindowHeight;
int currTop = 7;
//устанавливаем курсор на седьмую строку
Console.CursorTop = currTop;

for (int i = 1; i < 11; i++)
{
    Console.CursorLeft = (Console.BufferWidth - 20) / 2;
    for (int j = 1; j < 11; j++)
    {
        Console.ForegroundColor = (ConsoleColor)i;
        Console.Write($"{j-1} ");
        Thread.Sleep(100);
    }
    currTop++;
    Console.CursorTop = currTop;
    Thread.Sleep(1000);
    
}

Здесь мы выводим квадрат из чисел от 0 до 9 по середине окна консоли. В результате можно увидеть вот такую красоту:

Console

Если вы запустите приложение, то увидите, что числа появляются с некоторой задержкой. Для организации задержки мы использовали специальные метод:

Thread.Sleep(100);

который останавливает вывод на 100 мс или 1 секунду (Thread.Sleep(1000)).

Для управления положением курсора мы использовали свойства CursorLeft и CursorTop.

Итого

Для управления размером буфера консоли используются свойства BufferWidth (ширина буфера в столбцах) и BufferHeight (высота буфера в строках). Используя эти свойства мы можем организовать, например, вывод информации в строго заданном месте (по центру, с выравниванием слева, справа и т.д.).

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии