Как рисовать в консоли c

от admin

Консольное приложение, которое рисует сердечко на C#

Данный код не является оптимизированным или идеализированным, он очень простой и будет понятен новичкам(кем я и являюсь), потому надеюсь на понимание). Ну и еще это приложение было создано скорей смеха ради.

Вот, что в результате получилось у меня:

СЕРДЕЧКО СО СЛОВОМ «LOVE» ПОРВАНОЕ СЕРДЕЧКО ИЗ СИМВОЛОВПОРВАНОЕ СЕРДЕЧКО ИЗ СИМВОЛОВ ГИПЕРБОЛА С ОСЯМИ ИЗ ТОЧЕКГИПЕРБОЛА С ОСЯМИ ИЗ ТОЧЕК КРУГ ИЗ ТОЧЕККРУГ ИЗ ТОЧЕК

Суть работы

У нас есть массив(экран) так же такой массив называют экранный буффер, который выводит на экран пиксели(символы) в определенном порядке. По-сути мы делаем программу которая рисует графики функций(сердечко это тоже просто график функции), минусом такого приложения же будет то, что графики будут крайне не точны, потому что содержат в себе только целые числа, но для вывода фигур по-типу круга, сердца вполне подходит, чем больше масштаб — тем точнее будет.

Создание

В самой консоле лучше выбрать шрифт «Raster Fonts 8×8» дабы ширина символа = высоте, чтоб в дальнейшем не делить высоту на два.

В моем коде я сделал методы вызова разных графиков — для легкого использования (ну и убрал их в отдельный класс). Возможно сделаю вторую часть где покажу код с отдельными методами и возможными вариациями закраски (ну и покажу их принцип).

Drawing in a Win32 Console on C++?

Get the HWND of the console window using GetConsoleWindow and then draw in it.

Note: GetConsoleWindow was introduced in Windows 2000. It’s available when _WIN32_WINNT is set to 0x500 or greater.

No you can’t just do that because Win32 console doesn’t support those methods. You can however use GDI to draw on the console window.

This is a great example of drawing a bitmap on a console by creating a child window on it: http://www.daniweb.com/code/snippet216431.html

This isn’t really drawing in the console though. This is sort of drawing «over» the console but it still does the trick pretty well.

It is possible, albeit totally undocumented, to create a console screen buffer that uses an HBITMAP that is shared between the console window process and the calling process. This is the approach that NTVDM takes to display graphics once a DOS application switches to graphics mode.

MPelletier's user avatar

As Nick Brooks has pointed out, you can use GDI calls in console apps, but the graphics cannot appear in the same window as the text console I/O. This may not matter since you can draw text elements in GDI.

A simplified interface to GDI calls in console apps is provided by WinBGIm. It is a clone of Borland’s DOS BGI API, but with extensions to handle resizable windows, mouse input, and 24bit colour models. Since it is available as source code, it also serves a good demonstration of using GDI in this way.

It is possible to either have both a console and the GDI window, or you can suppress the console window by specifying that the application is a GUI app (the -mwindows linker option in GNU toolchain) — note that specifying a GUI app really only suppresses the console, it is only really a GUI app if it has a message loop. Having the console is good for debugging, since it is where stdout and stderr are output to by default.

Графика в Си.

В графическом режиме в Си можно отображать на экране различные фигуры, строить изображения, реализовывать анимацию и компьютерные игры.

Чтобы работать в графическом режиме в Си, необходимо перейти в графический режим, инициализировав графическое окно си initwindow ( ширина окна, высота окна ); в котором и будут рисоваться изображения. После завершения работы с графикой, необходимо выйти из графического режима с помощью команды closegraph();

Структура программы с графикой в Си.

#include <graphics.h> // подключение заголовочного файла с графическими функциями
#include <conio.h>
main()
<
initwindow ( 500, 500 ); // инициализировали и открыли окно размером 500 на 500
…рисуем графические объекты
getch(); // ждем нажатия клавиши
closegraph(); // закрываем графический режим
>

Основные графические объекты в си, такие как точка, линия, окружность, прямоугольник задаются с помощью системы координат. Система координат в графическом режиме Си задается следующим образом. Верхний левый угол экрана имеет координату x=0 и y=0.

Координата X задается слева направо. Т.е. чем больше X, тем правее точка.

Координата Y задается сверху вниз. Т.е. чем больше Y, тем ниже точка.

Максимальные X это ширина окна. Максимальное Y это высота окна.

графический режим в си с

Задание цвета изображения в Си

Чтобы задать цвет изображаемого объекта, используется оператор setcolor(номер цвета);

Читать:
Как изменить цвет кнопки макроса в эксель

Таблица цветов в Си.

0 черный
1 синий
2 зеленый
3 морской волны
4 красный
5 фиолетовый
6 коричневый
7 светло-серый
8 темно-серый
9 светло-синий
10 светло-зеленый
11 светлый морской волны
12 светло-красный
13 светло-фиолетовый
13 светло-фиолетовый
14 желтый
15 белый

setcolor(4) ;// устанавливаем красный цвет

Отображение точки в Си.

Для рисования точки в графических программах си используется оператор

putpixel (x, y, номер цвета );

x, y – координаты точки

номер цвета – цвет, которым будет отображена точка

Отображение линии в Си

Для рисования отрезка в графических программах си используется оператор

x1, y1 – координаты одного конца отрезка

x2, y2 – координаты другого конца отрезка

Отображение окружности в Си

Для рисования окружности в графических программах си используется оператор

x, y – координаты центра окружности

r- радиус окружности

Пример. Отображение окружности белого цвета с центром 100, 100 и радиусом 20.

setcolor(15);// устанавливаем цвет рисования 15 — белый

circle(100,100, 20);// рисуем окружность с центром 100, 100 и радиусом 20

Отображение прямоугольника в Си.

Для рисования прямоугольной рамки в графических программах си используется оператор.

rectangle (x1, y1, x2, y2);

x1, y1 – координаты верхнего левого угла прямоугольника

x2, y2 – координаты нижнего правого угла прямоугольника

Чтобы задать цвет рамки необходимо предварительно установить цвет рисования с помощью оператора setcolor(номер цвета);

Для отображения закрашенного прямоугольника в Си используются два оператора.

setfillstyle ( 1, номер цвета );

bar (x1, y1, x2, y2);

x1, y1 – координаты верхнего левого угла прямоугольника

x2, y2 – координаты нижнего правого угла прямоугольника

Закрашивание ограниченной области в Си.

Чтобы закрасить определенным цветом целую ограниченную область в графической программе си используются два оператора.

setfillstyle (1, цвет закраски );

floodfill (x, y, цвет границы области);

x, y – координаты внутри области

цвет закраски – цвет , которым будет закрашиваться область

цвет границы области – цвет границы закрашиваемой области

Пример закрашенного кругав графических программах си

setcolor(15);// устанавливаем цвет рисования 15 — белый

circle(100,100, 20);// рисуем окружность с центром 100, 100 и радиусом 20

setfillstyle ( 1, 15 ); // устанавливаем цвет заполнения круга белый -15

floodfill (100, 100, 15); // заполняем окружность, указывая точку внутри ее – центр

Пример графической программы на си

Пример программы 17 графическая программа на си рисует автомобиль.

#include <graphics.h>
#include <conio.h>
main()
<
initwindow(500, 500);// инициализируем графическое окно
// рисуем кузов
setfillstyle (1,4 ); // устанавливаем вид заливки 1 -полный, цвет заливки 4 — красный
bar(100, 150, 200, 170);// закрашенный прямоугольник нижняя часть кузова
bar(120, 150, 170, 130);// закрашенный прямоугольник верхняя часть кузова
// рисуем колеса
setcolor(15); // устанавливаем цвет колеса
circle(120, 170, 10); // левое колесо окружность ниже кузова
circle(170, 170, 10); // правое колесо окружность ниже кузова
setfillstyle (1,8); // устанавливаем вид заливки полный — 1 цвет серый — 8
floodfill(120,170,15); // закрашиваем круг левого колеса до границы круга цветом 15
floodfill(170,170,15); // закрашиваем круг левого колеса до границы круга цветом 15
getch(); // ждем нажатия кнопки
closegraph(); // выход из графического режима
>

рисунок на си

Вернуться к содержанию Перейти к следующему уроку Случайные числа в Си

как рисовать в консоли (c #)

Недавно в классе IT нам предоставили простую консольную программу, которая использовала вложенный цикл для рисования прямоугольного треугольника. Я не очень понимаю, что происходит в этом фрагменте кода. Может кто-нибудь объяснить, как это работает и как создавать другие формы в консоли? вот код:

3 ответа

Существует два цикла for, каждому циклу назначена переменная i или j, которая будет увеличиваться на единицу, пока не достигнет своего верхнего предела (i Площадь

Высокий прямоугольник

Длинный прямоугольник

Заменить I на строку заменить J на столбец, вы должны быть в состоянии выяснить это оттуда на

Но по сути программа может быть переведена как:

0a) инициализировать i на 1.

0b) инициализировать j на 1.

1) В строке I нарисуйте звезду, если J меньше или равно I, а затем добавьте 1 к J.

2) Повторите 1), пока J не станет больше, чем я.

3) Если J больше I, добавьте 1 к I, повторяйте от 0b) до I = limit (5).

Sidenote: более чистый код будет таким

Возможно, вы захотите заменить ‘height’ на ‘currentHeight’, но намерение яснее, чем просто использование букв в любом случае.

Внешний цикл для переменной i повторяется через 5 раз. В каждом цикле вложенный цикл с переменной j будет устанавливать столько « * », сколько в цикле i цикла и разрыв строки в конце. Поэтому, если это первый цикл из i, цикл j будет устанавливать 1 ‘ * ‘ во втором цикле ‘ ** ‘ и так далее. Что приведет к следующему выводу:

Похожие статьи