На языке 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. С помощью более сложных алгоритмов и функций этой библиотеки можно строить более сложные и интересные рисунки и графики.