Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
#1

Перемещение элемента - C++

28.10.2013, 14:05. Просмотров 452. Ответов 8
Метки нет (Все метки)

Подскажите, пожалуйста, с помощью каких функций можно задать перемещение (по кругу например) нарисованного элемента в picturebox?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 14:05     Перемещение элемента
Посмотрите здесь:

stl, перемещение элемента из вектора в стек - C++
Всем привет. Как переместить из вектора в вектор понятно std::remove_copy_if( vector1.begin(), vector1.end(),...

АТД список. Перемещение заданного элемента на первую позицию - C++
Здравствуйте!! Подскажите пожалуйста как переместить элемент списка на первую позицию? Например: есть список o o t o t,...

Определить номера минимального элемента массива и элемента, являющегося минимальным без учета этого элемента. - C++
Дан массив. Определить номера минимального элемента массива и элемента, являющегося мини-мальным без учета этого элемента.

Вектор из элементов равных умножения max элемента и min элемента в строке - C++
Из массива mn создать вектор из элементов равные умножению max элемента и min элемента в строке.

Вставить два элемента после мах элемента и перед ним - C++
Составить программу решения задачи на С++, использовать процедуры введения и вывода массивов, выделить в задаче вспомогательные алгоритмы и...

Формирования массивов Y и Z, определения максимального по модулю элемента, удаления элемента - C++
Из массива Х(N) все положительные элементы записать в массив Y(k), а все отрицательные элементы – в массив Z(m). Найти в каждом массиве...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
28.10.2013, 14:18     Перемещение элемента #2
Я так полагаю, что в элементе есть таки параметры, как его координаты (х,y). Меняя их - сможете двигать объект. По кругу - нужна математическая формула круга. Желательно в параметрическом виде. Тогда запросто сможете вычислять новые координаты.
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
28.10.2013, 15:13  [ТС]     Перемещение элемента #3
Цитата Сообщение от Hunter13ua Посмотреть сообщение
Я так полагаю, что в элементе есть таки параметры, как его координаты (х,y). Меняя их - сможете двигать объект. По кругу - нужна математическая формула круга. Желательно в параметрическом виде. Тогда запросто сможете вычислять новые координаты.
Я тоже так думаю, просто не знаю эффективен ли будет алгоритм: в цикле рисовать и стирать эллипс, может есть какой-то более красивый метод?

Добавлено через 19 минут
и можно ли ещё как-нибудь затормозить движение объекта, если делать в цикле?
zss
Модератор
Эксперт С++
6284 / 5887 / 1908
Регистрация: 18.12.2011
Сообщений: 15,111
Завершенные тесты: 1
28.10.2013, 15:14     Перемещение элемента #4
если picturebox - это окно,
то перемещать его можно функцией MoveWindow(...)
А моменты перемещения отлавливать с помощью сообщения WM_TIMER.
Так делается в Win32 API.
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
28.10.2013, 16:11  [ТС]     Перемещение элемента #5
Цитата Сообщение от zss Посмотреть сообщение
если picturebox - это окно,
то перемещать его можно функцией MoveWindow(...)
А моменты перемещения отлавливать с помощью сообщения WM_TIMER.
Так делается в Win32 API.
надо перемещать не picturebox, а объект в нём, например круг

Добавлено через 10 минут
В принципе, разобралась. Сделала с помощью рисования и стирания в цикле + Sleep(). Пришлось сделать отдельную кнопку для рисования, потому что если делать на кнопку с расчетами, то расчеты выводятся только после окончания рисования.
Может кто скажет ещё что-нибудь дельное по этому поводу?
zss
Модератор
Эксперт С++
6284 / 5887 / 1908
Регистрация: 18.12.2011
Сообщений: 15,111
Завершенные тесты: 1
28.10.2013, 16:20     Перемещение элемента #6
Цитата Сообщение от TyLinka Посмотреть сообщение
надо перемещать не picturebox, а объект в нём, например круг
Тогда, то WM_TIMER пересчитываем новое положение объекта и подаем команду на перерисовку
InvalidateRect(..).
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
int x=0; // координата, где рисовать
int WINAPI fn(HWND hwnd,int cmd,WPARAM wp,LPARAM lp)
{
    switch(cmd)
    {
 
    case WM_INITDIALOG:
        x=0;
        SetTimer(hwnd,1,100,NULL); // запуск таймера при открытии диалогового окна 
        return 1;
    case WM_TIMER:
        x++;                      // пересчет координаты, где рисовать
        InvalidateRect(hwnd,NULL,TRUE); // команда на перерисовку
        return 1;
    case WM_CLOSE:
        EndDialog(hwnd,3); // закрытие диалога
        return 1;
    case WM_SIZE:
        InvalidateRect(hwnd,NULL,TRUE); // перерисовка при изменении окна
        return 1;
    case WM_PAINT:
    {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hwnd, &ps);
        RECT rt;
        GetClientRect(hwnd, &rt);
        int w=rt.right;int h=rt.bottom;// длина и высота рабочей области
                
                
        HBRUSH b1,b2,b0;
        b1=CreateSolidBrush(RGB(255,255,255)); // белая кисть 1 круга
        b2=CreateSolidBrush(RGB(255,0,0)); // красная кисть 2 круга
                
        b0=(HBRUSH)SelectObject(hdc,b1);
        const int R=50;
        Ellipse(hdc,w/2-R,h/2-R,w/2+R,h/2+R);
 
        SelectObject(hdc,b2);
        Ellipse(hdcscr,x,h/2-R,x+2*R,h/2+R); 
        SelectObject(hdc,b0);
        DeleteDC(hdcscr);
        DeleteObject(b1);
        DeleteObject(b2);
                
        EndPaint(hwnd, &ps);
        return 1;
    }
    return 0;
        }
}
int WINAPI WinMain(HINSTANCE hi,HINSTANCE,LPSTR,int) 
{
    return DialogBox(hi,"SIMPLE",NULL,(DLGPROC)fn);
}
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
28.10.2013, 17:12  [ТС]     Перемещение элемента #7
вообще я делала всё в windows forms c++
этот код подойдет для неё?
zss
Модератор
Эксперт С++
6284 / 5887 / 1908
Регистрация: 18.12.2011
Сообщений: 15,111
Завершенные тесты: 1
28.10.2013, 17:28     Перемещение элемента #8
Там что-то похожее, но я windows form никогда не пользовался.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 17:58     Перемещение элемента
Еще ссылки по теме:

В пользовательском классе List (список) реализовать вставку элемента после заданного элемента - C++
Помогите пожалуйста, мне надо сделать вставку элемента после найденного, а у меня элемент добавляется на место первого элемента. ...

Получить новую матрицу путем вычитания из каждого элемента данной матрицы ее наименьшего элемента - C++
Доброго времени суток!) я был бы благодарен получить небольшую консультацию и правку в моем коде по этой задачке: Дана действительная...

Многомерный массив. Дублирование значения первого элемента строки в значении последнего элемента предыдущей - C++
Здравствуйте уважаемые форумчане! Решил я сегодня разобраться с многомерными массивами! И немного разочаровался в своих результатах....

Вставить два элемента по 1000, начиная с четвертого элемента исходного массива, сдвигая его элементы - C++
Помогите с созданием программы, которая выполняет следующие действия: a) одномерный массив из 10 элементов целого типа в диапазоне ; b)...


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

Или воспользуйтесь поиском по форуму:
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
28.10.2013, 17:58  [ТС]     Перемещение элемента #9
ясно, спасибо
Yandex
Объявления
28.10.2013, 17:58     Перемещение элемента
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru