Важная информация
Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 25

Тема: Движение picturebox

  1. #1 Движение picturebox 
    Новичок
    Регистрация
    01.06.2016
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Можно ли реализовать это как то? чтоб picturebox двигался от левого края формы и до правого без помощи мышки,кнопок и т.п. Раз в 2 минуты например
    Ответить с цитированием  
     

  2. #2  
    Разбирающийся
    Регистрация
    18.04.2014
    Адрес
    Ярославль
    Сообщений
    69
    Сказал(а) спасибо
    0
    Поблагодарили 65 раз(а) в 33 сообщениях
    Записей в блоге
    2
    Думаю таймер, и менять координаты picturebox по таймеру
    Ответить с цитированием  
     

  3. 2 пользователя(ей) сказали cпасибо:

    >Quiet Snow< (03.06.2016), Free Admin (03.06.2016)

  4. #3  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Ну если прыгать раз в две минуты, то действительно можно таймером. А если надо плавно, а раз в две минуты только запускать эту анимацию, тогда потоком: таймер выше примерно 18-ти герц не взвинтить, да и приоритет у него низкий.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  5. #4  
    Модератор
    Регистрация
    19.02.2014
    Сообщений
    403
    Сказал(а) спасибо
    108
    Поблагодарили 303 раз(а) в 191 сообщениях
    Записей в блоге
    36
    Цитата Сообщение от Сионист Посмотреть сообщение
    Ну если прыгать раз в две минуты, то действительно можно таймером. А если надо плавно, а раз в две минуты только запускать эту анимацию, тогда потоком
    Не советуй ересь, еще предложи новый процесс создать. В данной задаче таймера достаточно.
    Цитата Сообщение от Сионист Посмотреть сообщение
    таймер выше примерно 18-ти герц не взвинтить
    Только на Win98 и ниже. На NT это в районе 64 гц, что вполне достаточно для плавного движения, даже если этот показатель просядет в двое из-за более приоритетных операций. В конечном счете для постоянной, независимой скорости нужно рассчитывать дельту между двумя тиками и находить расстояние.
    UA6527P
    Ответить с цитированием  
     

  6. #5  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Цитата Сообщение от The trick Посмотреть сообщение
    Не советуй ересь, еще предложи новый процесс создать. В данной задаче таймера достаточно.
    В данной теме задача не ясна: то ли надо раз в две минуты прыгать сразу через весь экран, тогда сгодится таймер, то ли раз в две минуты начинать плавное движение и по достижении некоторых координат останавливать, тогда таймер не поможет, нужен поток.

    Цитата Сообщение от The trick Посмотреть сообщение
    аже если этот показатель просядет в двое из-за более приоритетных операций.
    В двое он редко садится. Чаще или работает, как заказано, или тормозит раз в 40.

    Цитата Сообщение от The trick Посмотреть сообщение
    В конечном счете для постоянной, независимой скорости нужно рассчитывать дельту между двумя тиками и находить расстояние.
    Как не считай дельту, если между тиками будет больше 42-х миллисекунд, то движение, пусть и сохранив скорость, станет дёрганным. Возьмите часы с секундной стрелкой и электродвигатель с редуктором и стрелкой на выходном валу, вращающейся с частотой 1 оборот в минуту, да посмотрите на обе стрелки. Одна раз в секунду прыгает на 1/60 оборота и останавливается, другая с той же средней скоростью крутится плавно. А если скорость и плавность надо гарантировать, то писать надо вообще не для винды, а, например, для фотона: винда системой реального времени становиться даже не собирается и если машина окажется перегружена, то выглядеть это движение станет достаточно странновато.

    Цитата Сообщение от The trick Посмотреть сообщение
    . На NT это в районе 64 гц,
    Не смешно.
    Последний раз редактировалось >Quiet Snow<; 05.06.2016 в 02:32. Причина: Объединение сообщений.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  7. #6  
    Модератор
    Регистрация
    19.02.2014
    Сообщений
    403
    Сказал(а) спасибо
    108
    Поблагодарили 303 раз(а) в 191 сообщениях
    Записей в блоге
    36
    Цитата Сообщение от Сионист Посмотреть сообщение
    В данной теме задача не ясна: то ли надо раз в две минуты прыгать сразу через весь экран, тогда сгодится таймер, то ли раз в две минуты начинать плавное движение и по достижении некоторых координат останавливать, тогда таймер не поможет, нужен поток.
    Поможет и поток тут не нужен.
    Цитата Сообщение от Сионист Посмотреть сообщение
    В двое он редко садится. Чаще или работает, как заказано, или тормозит раз в 40.
    Он вообще редко садится, только если главный поток его тормозит.
    Цитата Сообщение от Сионист Посмотреть сообщение
    Как не считай дельту, если между тиками будет больше 42-х миллисекунд, то движение, пусть и сохранив скорость, станет дёрганным.
    В винде разрешение таймера ~15мс.
    Цитата Сообщение от Сионист Посмотреть сообщение
    Возьмите часы с секундной стрелкой и электродвигатель с редуктором и стрелкой на выходном валу, вращающейся с частотой 1 оборот в минуту, да посмотрите на обе стрелки. Одна раз в секунду прыгает на 1/60 оборота и останавливается, другая с той же средней скоростью крутится плавно. А если скорость и плавность надо гарантировать, то писать надо вообще не для винды, а, например, для фотона: винда системой реального времени становиться даже не собирается и если машина окажется перегружена, то выглядеть это движение станет достаточно странновато.
    Для большого разрешения можно использовать высокочастотный таймер или увеличить разрешение с помощью timeBeginPeriod, но в любом случае нужно учитывать работу планировщика которой периодически будет переключать контексты.
    Цитата Сообщение от Сионист Посмотреть сообщение
    Не смешно.
    Прикинь:
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    UA6527P
    Ответить с цитированием  
     

  8. #7  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Цитата Сообщение от The trick Посмотреть сообщение
    Он вообще редко садится, только если главный поток его тормозит.
    Главный поток тормозит таймер? Однако!

    Цитата Сообщение от The trick Посмотреть сообщение
    В винде разрешение таймера ~15мс.
    Не 15, а 55.

    Цитата Сообщение от The trick Посмотреть сообщение
    Для большого разрешения можно использовать высокочастотный таймер или увеличить разрешение с помощью timeBeginPeriod, но в любом случае нужно учитывать работу планировщика которой периодически будет переключать контексты.
    Периодом запрашивается частота, а разрешение определяется аппаратным таймером, при каждом тике которого вычитается 55 и накопленная разность разность сравнивается с нолём, если <=0, то посылается сообщение и переменной снова присваивается запрошенный период.
    Последний раз редактировалось >Quiet Snow<; 05.06.2016 в 02:31. Причина: Объединение сообщений.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  9. #8  
    Модератор
    Регистрация
    19.02.2014
    Сообщений
    403
    Сказал(а) спасибо
    108
    Поблагодарили 303 раз(а) в 191 сообщениях
    Записей в блоге
    36
    Цитата Сообщение от Сионист Посмотреть сообщение
    Главный поток тормозит таймер? Однако!
    Да. Если главный поток ничем не загружен таймер будет работать с максимальным разрешением которое не зависит от загруженности процессора другими потоками.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    UA6527P
    Ответить с цитированием  
     

  10. #9  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    А ничего, что таймер обрабатывает сообщения и может работать только в первичном потоке? А тормозит он, если в очередях много сообщений. И практика показывает, что происходить это может по вине даже других процессов, часто даже системных, а чаще всего вообще в момент начала проверки флешки антивирусом. И что даже в идеальных условиях в каждой тысяче таймерных сообщений с периодом 55 мс минимум 3 склеиваются в одно, а часто клеятся сразу штук по 40.
    Последний раз редактировалось Сионист; 04.06.2016 в 20:49.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

  11. #10  
    Модератор
    Регистрация
    19.02.2014
    Сообщений
    403
    Сказал(а) спасибо
    108
    Поблагодарили 303 раз(а) в 191 сообщениях
    Записей в блоге
    36
    Цитата Сообщение от Сионист Посмотреть сообщение
    Не 15, а 55.
    15мс, а точнее можно узнать через GetSystemTimeAdjustment. 55мс в Win98.
    Еще раз [Ссылки могут видеть только зарегистрированные пользователи. ] эту тему если подзабыл.
    Цитата Сообщение от Сионист Посмотреть сообщение
    а разрешение определяется аппаратным таймером,
    Никто не спорит. Высокочастотный таймер обычно тикает с частотой намного выше разрешением системного таймера и позволяет считать наносекундные интервалы.
    Цитата Сообщение от Сионист Посмотреть сообщение
    при каждом тике которого вычитается 55 и накопленная разность разность сравнивается с нолём, если <=0, то посылается сообщение и переменной снова присваивается запрошенный период.
    Где такое написано? Почему 55? Генерируется прерывание от таймера на уровне IRQL Clock и в нем уже идет декремент интервалов исходя из частоты таймера (задаваемый либо через NtSetTimerResolution либо timeBeginPeriod), там же определяется квант времени для потока.
    UA6527P
    Ответить с цитированием  
     

Страница 1 из 3 123 ПоследняяПоследняя
Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Проект «Движение круга»
    от Данияр в разделе Разработки на Visual Basic
    Ответов: 14
    Последнее сообщение: 29.05.2013, 06:06
  2. Рисование в PictureBox
    от Стас в разделе C/C++
    Ответов: 8
    Последнее сообщение: 05.10.2012, 16:20
  3. Ответов: 4
    Последнее сообщение: 04.10.2012, 04:01
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •