Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
 Аватар для 1SherhaN
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 10

Движение image

09.10.2012, 22:08. Показов 3718. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, что делаю не правильно.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Interval = 10;
if (Image1->Left > 410) {
   Image1->Left = Image1->Left - 1;
  } else {
   if (Image1->Top > 250) {
    Image1->Top = Image1->Top - 1;
   } else {
    if (Image1->Left > 300) {
     Image1->Left = Image1->Left - 1;
    } else {
     if (Image1->Top < 290) {
      Image1->Top = Image1->Top + 1;
     } else {
      Image1->Left = Image1->Left - 1;
     }
    }
   }
  }
}
На строчке
C++
1
Image1->Top = Image1->Top + 1;
изображение зависает и не движется вниз. В чем проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2012, 22:08
Ответы с готовыми решениями:

Случайное движение Image
как задать случайное (хаотическое) движение изображения IMAGE?

Движение разных Image (не могу продумать реализацию)
Не могу продумать реализацию вот такой программы: Есть аэропорт, в нем есть стоянка самолетов, рулежные дорожки, взлетная полоса, и...

Builder c++. Image->Canvas. bitmap Подогнать рисунок в рамки Image
Добрый день! Долго искал работу canvasa на image. Нашел следующую реализацию, но при добавлении на image изображение выходит за рамки....

4
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.10.2012, 22:47
Это конец движения, судя по алгоритму. Влево, вверх, влево и вниз на 40 пикселей, затем стоп. А точнее - вибрация, на пиксель вверх и вниз, Top меняется между 289 и 290 каждый такт.
0
 Аватар для 1SherhaN
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 10
09.10.2012, 22:53  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Влево, вверх, влево и вниз на 40 пикселей, затем стоп.
В том то и проблема. Он не идет вниз на 40 пикс., а сразу начинает вибрацию.
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
10.10.2012, 13:45
1SherhaN Запутаться можно, если анимацию делать только с помощью if else <- неправильный подход.

Попробуй так (предварительно помести Label на форму):
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
struct _MOVE
{
    enum enDirection {LEFT, RIGHT, UP, DOWN} Direction; // направление
    int Pixels; // на сколько пикселей нужно сместить
};
 
const int g_NumActions = 4;
_MOVE g_move[g_NumActions] =  { {_MOVE::LEFT, 40},
                                {_MOVE::UP, 40},
                                {_MOVE::LEFT, 40},
                                {_MOVE::DOWN, 40} };
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    static int iAction = 0;
    static int iPixels = 0;
 
    if (iAction > g_NumActions) return;
 
    if ( iPixels < g_move[iAction].Pixels )
    {
        if ( g_move[iAction].Direction == _MOVE::LEFT ) Label1->Left--;
        else if ( g_move[iAction].Direction == _MOVE::RIGHT ) Label1->Left++;
        else if ( g_move[iAction].Direction == _MOVE::UP ) Label1->Top--;
        else if ( g_move[iAction].Direction == _MOVE::DOWN ) Label1->Top++;
        iPixels++;
    }
    else
    {
        iPixels = 0;
        iAction++;
    }
}
1
 Аватар для 1SherhaN
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 10
10.10.2012, 15:27  [ТС]
Спасибо, помогло
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.10.2012, 15:27
Помогаю со студенческими работами здесь

Движение спутника. Движение точки по эллипсу в c++ builder
Здравствуйте, есть код программы, который строит движение точки по эллипсу. Для этого использовались только большая полуось 'a' и меньшая...

Пересекаются ли Image с другим Image?
Как узнать пересекаются ли два Image на форме?

Как вставить Jpeg в Image? И какие форматы можно вставить в Image?
Подскажите как вставить Jpeg в Image? И какие форматы можно вставить в Image? Добавлено через 53 секунды вставка в image из...

Как обрезать Image (bitmap) в другой Image (bitmap)
Не получается никак пробовал с помощью Canvas-&gt;CopyRect. Вот метод где первый параметр изображение которое загрузили а второй обрезанное...

Наложение Image на Image
Ребят. Такая проблема. У меня рандомным образом задаются координаты для 5 компонентов Image Builder C++. Как мне сделать проверку, и...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru