Форум программистов, компьютерный форум, киберфорум
IrineK
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Анимация - движущийся "человек"

Запись от IrineK размещена 08.04.2014 в 07:37
Показов 5166 Комментарии 0
Метки c++, winapi, графика

Анимация сделана для консоли, но три функции, которые использованы, вполне годятся для полноценного окна.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <Windows.h>
 
void Circle (HWND hW, int xCenter, int yCenter, int radius, COLORREF borderColor, COLORREF fillColor)
{   HDC hDC = GetDC(hW);
    HPEN hPen = CreatePen(PS_SOLID, 1, borderColor);
    HPEN hOldPen = (HPEN)SelectObject(hDC, hPen);
    HBRUSH hBrush = CreateSolidBrush(fillColor);
    HBRUSH hOldBrush = (HBRUSH) SelectObject(hDC, hBrush);
    
    Ellipse(hDC, xCenter - radius, yCenter - radius, xCenter + radius, yCenter + radius);
    
    SelectObject(hDC, hOldPen); 
    DeleteObject (hPen);
    SelectObject(hDC, hOldBrush); 
    DeleteObject (hBrush);
    ReleaseDC (hW, hDC);
}
 
void Line (HWND hW, int x0, int y0, int x1, int y1, COLORREF color)
{   HDC hDC = GetDC(hW);
    HPEN hPen = CreatePen(PS_SOLID, 2, color);
    HPEN hOldPen = (HPEN)SelectObject(hDC, hPen);
 
    POINT p = {0,0};
    GetCurrentPositionEx (hDC, &p);
    MoveToEx(hDC, x0, y0, &p);
    LineTo (hDC, x1, y1);
    
    SelectObject(hDC, hOldPen); 
    DeleteObject (hPen);
    ReleaseDC (hW, hDC);
}
 
void Picture (HWND hW, int dx, int dy, int mode)
{   COLORREF border = RGB(255,255,0), fill = RGB (127,127,0), line = RGB (0,255,0), black = RGB (0,0,0);
    if (!mode)
        border = fill = line = black;
    int x0 = 50, y0 = 50, r = 10;
 
    Circle (hW, x0 + dx, y0 + dy, r, border, fill);
    Line (hW, x0 + dx, y0 + dy + r, x0 + dx, y0 + dy + r + 30, line);
    Line (hW, x0 + dx, y0 + dy + r + 30, x0 + dx - 10, y0 + dy + r + 70, line);
    Line (hW, x0 + dx, y0 + dy + r + 30, x0 + dx + 10, y0 + dy + r + 70, line);
    Line (hW, x0 + dx - 5, y0 + dy + r + 7, x0 + dx + 5, y0 + dy + r + 2, line);
    Line (hW, x0 + dx - 5, y0 + dy + r + 7, x0 + dx - 10, y0 + dy + r + 25, line);
    Line (hW, x0 + dx + 5, y0 + dy + r + 2, x0 + dx + 10, y0 + dy + r + 20, line);
}
 
 
int main()
{   HWND hW = GetConsoleWindow();
    int step = -1;
    Sleep (1000);
 
    for ( ; ;++step)
    {   Picture (hW, 5*step,0,1);
        Sleep (200);
        Picture (hW, 5*step,0,0);
        if (step > 100)
            step = -10;
    }
    
    system ("pause");
    return 0;
}
Изображения
 
Метки c++, winapi, графика
Размещено в Графика
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru