Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34

Движение лифта вверх и вниз, изображённого в PictureBox

11.11.2014, 13:19. Показов 8654. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите построить движение лифта вверх и вниз, с графикой просто не дружу. Нужно плавное движение лифта.


lift.zip
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.11.2014, 13:19
Ответы с готовыми решениями:

NumericUpDown: вверх или вниз?
Необходимо узнать, было нажато уменьшение значения или увеличение. Вариант с запоминанием предыдущего значения не предлагать - у меня они в...

TrackBar и кнопки вверх/вниз
Здравствуйте! помогите пожалуйста: на форме есть два trackBar, сейчас при фокусе на любом trackBar его значение изменяется стрелками и...

Как осуществить перемещение элементов форм вверх и вниз
private void button1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.A) { ...

32
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
12.11.2014, 01:14
Как я понимаю, есть pictureBox1 и на нем установлен лифт.
Для перемещения pictureBox1 с лифтом нужно установить таймер.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Forms Code
{
   public partial class Form1 : Form
    {
      private int x, y;
      private void Form1_Load(object sender, EventArgs e)
      {
          x = 50;
           y = 50;
      }
 
 
 
   private void timer1_Tick(object sender, EventArgs e)
        {
            pictureBox1.Left= x;
             pictureBox1.Top = y;
              y +=1;  // движение вниз 
                y -=1; // вверх
        }
 
}
0
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34
12.11.2014, 11:29  [ТС]
zna926, у меня на pictureBox ест картинка, которая должна двигаться по нему. У нее есть стартовые координаты, на 1 этаже, и как ее заставить двигаться вверх, а потом продолжить движение не стартовой позиции, а с того места где она остановилась
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
12.11.2014, 15:05
Вопрос? А зачем нужен рикчербокс. Картинка вполне может двигаться по форме. Если нужен, тогда проще
двигать рикчербокс, при этом будет двигаться и картинка.
0
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34
12.11.2014, 15:50  [ТС]
zna926, пробовал без него, у меня не получилось через класс нарисовать этажи на форме
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
13.11.2014, 23:50
Перемещение лифта можно осуществлять и так :

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
namespace lift
{
    public partial class Form1 : Form
    {   
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Stop();
            pictureBox2.Load(@"D:\Ресурс изображений\lif.jpg");//Загружаете изображение лифта в pictureBox2 и перемещаете pictureBox2 с пом.timer1
          
        }
        private void pictureBox2_Paint(object sender, PaintEventArgs e)
        {
           // pictureBox2.Load(@"D:\Ресурс изображений\lif.jpg");
        }
 
        int i = 1;
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();          
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
           --i;
           pictureBox2.Location = new Point(262, i+324);
        }
 
    }
}
Остановку лифта на этаже делайте при пом.timer1.Stop(), при условии достижения PictureBox с лифтом опр.координаты Y на Form1, с отрисовкой этажей в Paint.

Добавлено через 4 минуты
Подгони размер pictureBox2 под размер картинки лифта.

Добавлено через 6 минут
Свойство Interval в timer1 назначь =100.
0
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34
16.11.2014, 11:02  [ТС]
Веселый, все равно та же проблема, лифт не хочет двигаться. Делал отладку, таймер идет, координата i меняется, координата Y pictureBox2 тоже меняется, но движения нет
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
16.11.2014, 14:06
C#
1
2
3
4
5
private void timer1_Tick(object sender, EventArgs e)
        {
           --i;
           pictureBox2.Location = new Point(262, i+324);
        }
У меня была похожая проблема. Вместо pictureBox2.Location = new Point(262, i+324); нужно
C#
1
2
       pictureBox2.Left = 262;
       pictureBox2.Top = i+324;
Думаю будет работать
0
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34
16.11.2014, 16:16  [ТС]
zna926, можете помочь с реализацией. Он уже двигается, но я не пойму как задать ему куда двигаться(вверх или вниз) и до какой точки двигаться, на примере второго этажа? Вот последняя версия
lift.zip
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
16.11.2014, 22:01
Для управления лифтом я бы использовал массив int .Свойство Buttontext поменял бы на цифры с массива, и управлял бы при помощи циклов , записанных в методах :

C#
1
2
3
private void button1_Click(object sender, EventArgs e){}
 private void button2_Click(object sender, EventArgs e){}
 private void button1_Click(object sender, EventArgs e){}
и т.д.

Для движения вверх или вниз просто в коде меняй знак ++i, --i.

Добавлено через 14 минут
Если уж на то пошло - тогда вот:
C#
1
2
3
4
if(pictureBox2.Top ==100)//высота этажа(назначеш свою)
{
  timer1.Stop();
}
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
17.11.2014, 00:56
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Forms Code
{
     public int delta;
     private void Form1_Load(object sender, EventArgs e)
      {
          pictureBox1.Left = 262; // эта величина постоянная, ее вносить в таймер не нужно 
           delta =1; // перемещение лифта за 1 тик таймера, по усмотрению
             y = 50 // стартовая величина - положение начала движения лифта, можете поменять
      } 
  private void timer1_Tick(object sender, EventArgs e)
        {
        
            pictureBox1.Top = y + delta; 
              if(y <=50) 
               y  +=delta;   // движение вниз 
              if(y >= 400) 
              y -= delta;  // движение вверх  
                
        }
 
}
0
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34
17.11.2014, 13:25  [ТС]
Спасибо вам большое. У меня один вопрос еще. Я вставил изображение в пикчербокс, а как сделать что бы оно подгонялось под размер элемента?

Добавлено через 2 часа 32 минуты
Все со всем разобрался. Теперь задание, дали, надо очередь добавить, поэтому такой вопрос. Можно как то сделать, что бы выполнялся участок кода, в кнопке, потом в середине timer.start, а потом опять код продолжался идти дальше? А то у меня таймер стартует, и одновременно с ним продолжается код идти, без остановки на таймер.
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
17.11.2014, 13:31
Пикчербокс можно просто растягивать и сжимать до нужного размера.
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
17.11.2014, 17:16
свойство Dock = Fill;
0
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34
19.11.2014, 15:19  [ТС]
lift.zip

Помогите сделать симуляцию работы лифта. Т.е. будут появляться человчки, а к ним будет ехать лифт, и отвозить на нужный этаж. ОЧень срочно надо.
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
19.11.2014, 15:49
1) у тебя пустая переменная g

Добавлено через 6 минут
в общем, стоит рисовать в bitmap, а после только выводить в pictureBox1

Добавлено через 7 минут
не досмотрел. Ты же createGrahics спользуешь
0
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34
19.11.2014, 16:01  [ТС]
Baky, Мне надо сделать симуляцию работы лифта, но я не могу придумать как это все сделать
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
19.11.2014, 16:23
ладно, помогу! только расскажи что нужно сделать с человечками и вообще подробно скажи.

Добавлено через 11 секунд
Лифт теперь нормально ездит и человечки появляются. Что с ними теперь делать?!
0
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 34
19.11.2014, 18:05  [ТС]
Baky, надо добавить симуляцию работы лифта. Люди будут вызывать лифт, и ехать на нужный им этаж. к примеру с первого на 15, а на 4 этаже к нему еще подсел человек, который тоже едет вверх. Что бы эти все ситуации появлялись рандомно, и желательно, если можно, то что бы это все было в новом классе.
Я думаю как то так. Если есть предложения, то говори
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
20.11.2014, 08:38
вариантов много, но нужны уточнения типа: сколько на одном этаже может быть пассажиров, вместимость лифт, как определять вверх едет пассажир или в низ?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2014, 08:38
Помогаю со студенческими работами здесь

Сдвинуть элементы в dataGridView Вверх/Вниз/Вправо/Влево
Нужно сдвинуть элементы матрицы(4х4) в dataGridView Вверх/Вниз/Вправо/Влево избавившись от пустых клеток между ними... 0 - пустой элемент...

Как заставить VScrollBar прокручивать список из кнопок вверх и вниз
Как заставить работать VScrollBar чтобы он прокручивал список из кнопок в верх и в низ? И как ограничить размеры формы чтобы нельзя было...

Движение фигуры вверх
Как сделать чтобы фигура двигалась вверх после её создания? В моем случае это &quot;picture&quot; Вот мой исходный код: ...

Как поменять назначение кнопок вверх/вниз и вправо/влево между собой у компонента MenuStrip?
товарищи, помогите. Как поменять назначение кнопок вверх/вниз и вправо/влево между собой у компонента MenuStrip?

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru