Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Функция позволяющая отрисовать круг (окружность) поверх всех окон (OS Windows)
- Автор - aws_qwark (вдохновлено geniusenstein (ded))
- */
- #include <Windows.h>
- ...
- void DrawCircle(
- HDC dc, // Контекст отрисовки
- POINT position, // Координаты центра
- int radius, // Радиус круга (окружности)
- COLORREF color, // Цвет круга (окружности)
- bool isFilled = false, // Будет ли фигура закрашенной
- int lineHeight = 20 // Если фигура не будет являться закрашенной, то этот параметр будет отвечать за толщину линии
- )
- {
- int x = position.x - radius;
- int y = position.y - radius;
- for (;;)
- {
- x++;
- if (x > position.x + radius)
- {
- x = position.x - radius;
- y++;
- }
- if (y > position.y + radius)
- {
- break;
- }
- // Рисовать ли пиксель на текущих координатах?
- bool predicate = false;
- if (isFilled) predicate = pow(x - position.x, 2) + pow(y - position.y, 2) <= radius * raduis;
- else {
- predicate = (x - position.x) * (x - position.x) + (y - position.y) * (y - position.y) <= radius * radius + lineHeight &&
- (x - position.x) * (x - position.x) + (y - position.y) * (y - position.y) >= radius * radius - lineHeight;
- }
- // Если рисовать, то рисуем...
- if (predicate) SetPixel(dc, x, y, color);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement