Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Вадим77
1 / 1 / 0
Регистрация: 21.04.2016
Сообщений: 161

Движение окружности

30.07.2017, 19:30. Показов 632. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Когда использую координаты мышки у меня получается рисование а движение только в верхнем левом углу в квадрате. А как мне сделать так чтобы было движение и как мне убрать квадрат в левом верхнем углу?

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <windows.h>
#include <iostream>
 
int InputInteger(const char * str, int min, int max) {
    int x;
    std::cout << str;
    bool ErrorFlag;
    do {
        std::cin.clear();
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin >> x;
        ErrorFlag = !std::cin.good() || x< min || x>max;
        if (ErrorFlag) {
            std::cout << "Error. " << str;
        }
    } while (ErrorFlag);
    std::cin.ignore(std::cin.rdbuf()->in_avail());
    return x;
}
 
HWND GetConsoleHwnd(void) {
#define MY_BUFSIZE 1024
    HWND hwndFound;
    char pszNewWindowTitle[MY_BUFSIZE];
    char pszOldWindowTitle[MY_BUFSIZE];
    GetConsoleTitle(LPWSTR(pszOldWindowTitle), MY_BUFSIZE);
    wsprintf(LPWSTR(pszNewWindowTitle), LPCWSTR("%d/%d"),
        GetTickCount(),
        GetCurrentProcessId());
    SetConsoleTitle(LPCWSTR(pszNewWindowTitle));
    Sleep(1);
    hwndFound = FindWindow(NULL, LPCWSTR(pszNewWindowTitle));
    SetConsoleTitle(LPCWSTR(pszOldWindowTitle));
    return(hwndFound);
}
 
int main() {
    RECT o;
    POINT p;
    HWND wh = GetConsoleHwnd();
    /* COORD c = { 50,10 }; */
 
    HWND hWnd = GetConsoleWindow();
    HDC hDC = GetDC(hWnd);
    RECT temp;
    GetClientRect(hWnd, &temp);
    HDC hBufferDC = CreateCompatibleDC(hDC);
    HBITMAP hBufferBmp = CreateBitmap(temp.right, temp.bottom, 1, 32, NULL);
    HBITMAP hBufferBmpOld = (HBITMAP)SelectObject(hBufferDC, hBufferBmp);
    FillRect(hBufferDC, &temp, (HBRUSH)GetStockObject(WHITE_BRUSH));
    std::cout << "Enter color:\n";
    int r, g, b;
    r = InputInteger("Enter R value[0,255]:", 0, 255);
    g = InputInteger("Enter G value[0,255]:", 0, 255);
    b = InputInteger("Enter B value[0,255]:", 0, 255);
    system("cls");
    HBRUSH hBrush = CreateSolidBrush(RGB(r, g, b));
    HPEN hPen = CreatePen(PS_SOLID, 1, RGB(r, g, b));
    HBRUSH hOldBrush = (HBRUSH)SelectObject(hBufferDC, hBrush);
    HPEN hOldPen = (HPEN)SelectObject(hBufferDC, hPen);
    RECT circle = { 0, 0, 100, 100 };
    size_t step_h = 1, step_v = 1;
    while (!GetAsyncKeyState(VK_ESCAPE)) {
 
        GetWindowRect(wh, &o);
        GetCursorPos(&p);
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), { 0,0 });
 
        FillRect(hBufferDC, &circle, (HBRUSH)GetStockObject(WHITE_BRUSH));
        /* if (GetAsyncKeyState(VK_LEFT)) {
        circle.left -= step_h;
        circle.right -= step_h;
        }
        if (GetAsyncKeyState(VK_RIGHT)) {
        circle.left += step_h;
        circle.right += step_h;
        }
        if (GetAsyncKeyState(VK_DOWN)) {
        circle.top += step_v;
        circle.bottom += step_v;
        }
        if (GetAsyncKeyState(VK_UP)) {
        circle.top -= step_v;
        circle.bottom -= step_v;
        }  */
 
        Ellipse(hBufferDC, p.x, p.y, p.x + 50, p.y + 50); 
        /* Ellipse(hBufferDC, circle.left, circle.top, circle.right, circle.bottom); */
        BitBlt(hDC, 0, 0, temp.right, temp.bottom, hBufferDC, 0, 0, SRCCOPY);
        /* std::cout << circle.left << ":" << circle.top << ":" << circle.right << ":" << circle.bottom << std::endl; */
        std::cout << p.x << ":" << p.y << ":" << p.x + 50 << ":" << p.y + 50 << std::endl;
        Sleep(10);
    }
    SelectObject(hBufferDC, hOldBrush);
    SelectObject(hBufferDC, hOldPen);
    SelectObject(hBufferDC, hBufferBmpOld);
    DeleteObject(hBrush);
    DeleteObject(hPen);
    DeleteObject(hBufferBmp);
    DeleteDC(hBufferDC);
    ReleaseDC(hWnd, hDC);
    return 0;
}
Миниатюры
Движение окружности  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.07.2017, 19:30
Ответы с готовыми решениями:

Движение окружности
Здравствуйте. Когда использую координаты мышки у меня получается рисование а движение только в верхнем левом углу в квадрате. А как мне...

Движение фигуры по окружности. C++
Здравствуйте, помогите пожалуйста усовершенствовать/подсказать/исправить код движения круга по окружности, движение ещё кое как у меня...

Движение планеты в системе двойной звезды или движение трех тел
программа должна выводить координаты движения звезд и планеты в файл (рисую в gnuplot). во-первых, не понимаю, почему выходит, что все...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.07.2017, 19:30
Помогаю со студенческими работами здесь

Сформировать меню: 1) свободное движение объекта 2)движение с клавиатуры
Сформировать на экране меню, состоящее из следующих пунктов: 1. Движение вдоль периметра экрана. Через случайное количество тактов...

Постройте две окружности, имитируя движение одной окружности по другой
Постройте на экране компьютера две окружности радиусов R1, R2 разных цветов, имитируя движение одной окружности по другой.

Движение окружности по окружности
Помогите пожалуйста с решением, используя технологию объектно-ориентированного программирования разработать движение окружности по...

Движение по окружности
Нужно чтобы картинка двигалась по окружности тут создаётся точка относительно которой будет двигаться картинка, но как заставить...

Движение окружности
Помогите сделать чтобы моя окружность двигалась в ту точку куда я кликну!Напишите код очень надо!Заранее спасибо!На C# в Windows Forms...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru