Работа с графикой (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);
   }

Объяснение кода листинга программы

  1. #include Включает библиотеку Windows, которая содержит функции для работы с Windows API.
  2. #include Включает библиотеку iostream, которая содержит функции для ввода и вывода данных.
  3. using namespace std; Объявляет, что мы будем использовать функции из стандартной библиотеки, чтобы избежать необходимости писать std:: перед каждым использованием.
  4. void draw_rectangle(HANDLE _hStdout, int left, int top, int right, int bottom); Эта функция задает прямоугольник на экране, используя указанные координаты.
  5. void set_cursor_pos(HANDLE _hStdout, int x, int y); Эта функция устанавливает курсор на экране на указанную позицию.
  6. char fill_char = ' '; Эта переменная содержит символ, который будет использоваться для заполнения прямоугольника.
  7. int main() Это точка входа в программу, где все начинается.
  8. HANDLE hStdout; Эта переменная содержит дескриптор стандартного вывода, который используется для взаимодействия с консолью.
  9. hStdout = GetStdHandle(STD_OUTPUT_HANDLE); Получает дескриптор стандартного вывода.
  10. if (hStdout == INVALID_HANDLE_VALUE) Проверяет, является ли дескриптор валидным. Если нет, выводит сообщение об ошибке и завершает программу.
  11. SetConsoleTextAttribute(hStdout, BACKGROUND_RED); Устанавливает цвет текста на красный.
  12. draw_rectangle(hStdout,6,3,14,7); Рисует прямоугольник на экране с указанными координатами.
  13. COORD p1 = {7,4}; Определяет координаты, куда будет установлен курсор.
  14. SetConsoleCursorPosition(hStdout, p1); Устанавливает курсор на указанные координаты.
  15. cout<<HELLO!<<endl; Выводит текст HELLO! на экран.
  16. COORD p2 = {0,24}; Определяет координаты, куда будет установлен курсор.
  17. SetConsoleCursorPosition(hStdout, p2); Устанавливает курсор на указанные координаты.
  18. SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY); Устанавливает цвет текста на красный, зеленый, синий и интенсивный.
  19. return 0; Завершает программу.
  20. //-------------------------------------------------------------- Это комментарий, который используется для обозначения начала и конца блока кода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5