Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
TyLinka
33 / 33 / 21
Регистрация: 02.02.2012
Сообщений: 181
1

Перемещение элемента

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

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

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

Перемещение данных из одного элемента класса в другой (!)
Собственно задание такое: Описать класс, реализующий стек и работу с ним. 1.) Класс должен...

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

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

Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента
Добавить в класс "Односвязный список" следующие функции: вставка элемента в заданную позицию,...

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

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

Добавлено через 10 минут
В принципе, разобралась. Сделала с помощью рисования и стирания в цикле + Sleep(). Пришлось сделать отдельную кнопку для рисования, потому что если делать на кнопку с расчетами, то расчеты выводятся только после окончания рисования.
Может кто скажет ещё что-нибудь дельное по этому поводу?
0
zss
Модератор
Эксперт С++
9102 / 7884 / 4859
Регистрация: 18.12.2011
Сообщений: 21,035
Завершенные тесты: 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);
}
1
TyLinka
33 / 33 / 21
Регистрация: 02.02.2012
Сообщений: 181
28.10.2013, 17:12  [ТС] 7
вообще я делала всё в windows forms c++
этот код подойдет для неё?
0
zss
Модератор
Эксперт С++
9102 / 7884 / 4859
Регистрация: 18.12.2011
Сообщений: 21,035
Завершенные тесты: 1
28.10.2013, 17:28 8
Там что-то похожее, но я windows form никогда не пользовался.
0
TyLinka
33 / 33 / 21
Регистрация: 02.02.2012
Сообщений: 181
28.10.2013, 17:58  [ТС] 9
ясно, спасибо
0
28.10.2013, 17:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 17:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Перемещение элемента
Почему строка 20 возвращает NaN в переменной x? <DOCTYPE html> <html> <head> <meta...

перемещение элемента
Добрый день. Не могли бы вы посказать как сделать так чтобы текст что на картинке перешел вниз ...

перемещение элемента
Как правильно сделать перемещение дива по экрану при нажатии кнопки ? Я допер что получая свойство...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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