none
Плавное перемещение PictureBox'ов RRS feed

  • Вопрос

  • Помогите с проблемой.

    По форме перемещаются PictureBox'ы в потоках. Когда 10-15 потоков, в принципе всё в порядке, но стоит их увеличить, как все картинки начинают дёргаться либо вовсе не прорисовываться. Никаких громоздких вычислений нет, только перемещение картинок.

    Картинки "бегают" так:

    pictureBox.Invoke(new MethodInvoker(delegate() { 
    
    pictureBox.Location = new Point(x, y); 
    
    // Пробовал добавить - pictureBox.Invalidate();  
    }));
    
    Thread.Sleep(3);
    
    и снова перемещение...и тд.

    Пробовал и форму обновлять (this.Invalidate()), ничего не помогает...вобще возможно картинок 100 одновременно плавно перемещать ?


    19 ноября 2013 г. 12:44

Ответы

  • Я так понимаю нужно сделать Image.FromFile и как-то поместить на форму ? Или каким методом размещать картинку на самой форме ?

    Ее нужно не размещать а рисовать. То есть вместо того что бы двигать размещенные, вам нужно перерисовывать фон окна раз в определенное время, что и создаст эффект движения картинок.

    Конкретно реализацию не подскажу, так как сто лет не использовал GDI+, но начать советую отсюда.


    Yes, yes - am back!

    19 ноября 2013 г. 13:48
    Отвечающий

Все ответы

  • PictureBox слишком тяжелый класс для таких операций. Уверен, что на машине по слабее и 10-15 будут дергаться и не прорисовываться.

    Тут либо WPF (ну как я мог обойти стороной любимую платформу))) либо рисовать картинки на низком уровне прямо на поверхности окна


    Yes, yes - am back!

    19 ноября 2013 г. 13:25
    Отвечающий
  • Я так понимаю нужно сделать Image.FromFile и как-то поместить на форму ? Или каким методом размещать картинку на самой форме ?
    19 ноября 2013 г. 13:42
  • Я так понимаю нужно сделать Image.FromFile и как-то поместить на форму ? Или каким методом размещать картинку на самой форме ?

    Ее нужно не размещать а рисовать. То есть вместо того что бы двигать размещенные, вам нужно перерисовывать фон окна раз в определенное время, что и создаст эффект движения картинок.

    Конкретно реализацию не подскажу, так как сто лет не использовал GDI+, но начать советую отсюда.


    Yes, yes - am back!

    19 ноября 2013 г. 13:48
    Отвечающий