Работа с графикой (Dev C++) - C (СИ)
Формулировка задачи:
Нарисовать квадрат и написать в середине слово hello
Среда: Dev-C++
всем спасибо за помощь..))
Решение задачи: «Работа с графикой (Dev C++)»
textual
Листинг программы
#include <windows.h> #include <iostream> using namespace std; void draw_rectangle(HANDLE _hStdout, int left, int top, int right, int bottom); //задание прямоугольника по координатам: void set_cursor_pos(HANDLE _hStdout, int x, int y);//установка курсора на указанный столбец и строку char fill_char = ' '; int main() { HANDLE hStdout; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); if (hStdout == INVALID_HANDLE_VALUE) cout<<"ERROR in GetStdHandle STD_INPUT_HANDLE"<<endl; SetConsoleTextAttribute(hStdout, BACKGROUND_RED); draw_rectangle(hStdout,6,3,14,7); COORD p1 = {7,4}; SetConsoleCursorPosition(hStdout, p1); cout<<"HELLO!"<<endl; COORD p2 = {0,24}; SetConsoleCursorPosition(hStdout, p2); SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY); return 0; } //-------------------------------------------------------------- void draw_rectangle(HANDLE _hStdout, int left, int top, int right, int bottom) //задание прямоугольника по координатам: { //верхний левый правый нижний углы DWORD cWritten; int width = right - left + 1; for(int y=top; y<=bottom; y++) //stack of strings { set_cursor_pos(_hStdout, left, y); for(int j=0; j<width; j++) { if (!WriteFile(_hStdout,&fill_char,sizeof(char),&cWritten,NULL)) { cout<<"ERROR in WriteFile"<<endl; return; } } } } //-------------------------------------------------------------- void set_cursor_pos(HANDLE _hStdout, int x, int y)//установка курсора на указанный столбец и строку { COORD cursor_pos; //origin in upper left corner cursor_pos.X = x - 1; //Windows starts at (0, 0) cursor_pos.Y = y - 1; //we start at (1, 1) SetConsoleCursorPosition(_hStdout, cursor_pos); }
Объяснение кода листинга программы
- #include
Включает библиотеку Windows, которая содержит функции для работы с Windows API. - #include
Включает библиотеку iostream, которая содержит функции для ввода и вывода данных. - using namespace std; Объявляет, что мы будем использовать функции из стандартной библиотеки, чтобы избежать необходимости писать std:: перед каждым использованием.
- void draw_rectangle(HANDLE _hStdout, int left, int top, int right, int bottom); Эта функция задает прямоугольник на экране, используя указанные координаты.
- void set_cursor_pos(HANDLE _hStdout, int x, int y); Эта функция устанавливает курсор на экране на указанную позицию.
- char fill_char = ' '; Эта переменная содержит символ, который будет использоваться для заполнения прямоугольника.
- int main() Это точка входа в программу, где все начинается.
- HANDLE hStdout; Эта переменная содержит дескриптор стандартного вывода, который используется для взаимодействия с консолью.
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE); Получает дескриптор стандартного вывода.
- if (hStdout == INVALID_HANDLE_VALUE) Проверяет, является ли дескриптор валидным. Если нет, выводит сообщение об ошибке и завершает программу.
- SetConsoleTextAttribute(hStdout, BACKGROUND_RED); Устанавливает цвет текста на красный.
- draw_rectangle(hStdout,6,3,14,7); Рисует прямоугольник на экране с указанными координатами.
- COORD p1 = {7,4}; Определяет координаты, куда будет установлен курсор.
- SetConsoleCursorPosition(hStdout, p1); Устанавливает курсор на указанные координаты.
- cout<<
HELLO!
<<endl; Выводит текстHELLO!
на экран. - COORD p2 = {0,24}; Определяет координаты, куда будет установлен курсор.
- SetConsoleCursorPosition(hStdout, p2); Устанавливает курсор на указанные координаты.
- SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY); Устанавливает цвет текста на красный, зеленый, синий и интенсивный.
- return 0; Завершает программу.
- //-------------------------------------------------------------- Это комментарий, который используется для обозначения начала и конца блока кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д