Как нарисовать такой рисунок на с?

На языке C можно нарисовать различные рисунки и графики, используя библиотеки для работы с графикой, такие как OpenGL, SDL, Allegro и другие. Ниже я рассмотрю пример рисования простого графического рисунка с использованием библиотеки SDL.

Для начала необходимо установить библиотеку SDL и настроить проект с помощью компилятора, который поддерживает язык C, например, GCC или Clang.

Вот пример программы на C с использованием библиотеки SDL для рисования прямоугольника с кругом внутри:

#include <stdio.h>
#include <SDL2/SDL.h>

int main(int argc, char* args[]) {
    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window* window = SDL_CreateWindow("Рисунок", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN);
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

    SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
    SDL_RenderClear(renderer);

    SDL_Rect rectangle;
    rectangle.x = 200;
    rectangle.y = 200;
    rectangle.w = 400;
    rectangle.h = 200;

    SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
    SDL_RenderFillRect(renderer, &rectangle);

    int radius = 100;
    int cx = 400;
    int cy = 300;

    SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);

    for (int y = -radius; y <= radius; ++y) {
        for (int x = -radius; x <= radius; ++x) {
            if (x * x + y * y <= radius * radius) {
                SDL_RenderDrawPoint(renderer, cx + x, cy + y);
            }
        }
    }

    SDL_RenderPresent(renderer);

    SDL_Delay(3000);

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);

    SDL_Quit();

    return 0;
}

Комментарии к программе:

1. В первых двух строках подключаем необходимые библиотеки: stdio.h для функций ввода-вывода и SDL2/SDL.h для работы с библиотекой SDL.

2. В функции main инициализируем библиотеку SDL с помощью функции SDL_Init, создаем окно и рендерер с помощью функции SDL_CreateWindow и SDL_CreateRenderer соответственно.

3. Устанавливаем цвет для очистки экрана с помощью функции SDL_SetRenderDrawColor и очищаем экран с помощью функции SDL_RenderClear.

4. Создаем прямоугольник с помощью структуры SDL_Rect и устанавливаем его координаты и размеры.

5. Устанавливаем цвет заливки прямоугольника и рисуем его на экране с помощью функции SDL_RenderFillRect.

6. Устанавливаем цвет для рисования круга и рисуем его на экране с помощью двух вложенных циклов for, используя уравнение окружности.

7. Показываем нарисованный рисунок на экране с помощью функции SDL_RenderPresent.

8. Задерживаем выполнение программы на 3 секунды с помощью функции SDL_Delay.

9. Освобождаем ресурсы, уничтожая рендерер и окно с помощью функций SDL_DestroyRenderer и SDL_DestroyWindow.

10. Завершаем работу с библиотекой SDL с помощью функции SDL_Quit.

Это простой пример, показывающий основные шаги для рисования примитивов с использованием библиотеки SDL на языке C. С помощью более сложных алгоритмов и функций этой библиотеки можно строить более сложные и интересные рисунки и графики.