![](/logo_grey.gif)
Последние записи
- Проверка на шестнадцатеричный формат записи
- Отдать пользователю файл с помощью file_get_contents()
- Написать собственую функцию operator[] для битов
- Проблема с движением 2D человека
- OpenGl.Создание винтовой лестницы
- Склеить несколько файлов в один
- Windows 10 сменить администратора
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
![](http://programmersclub.ru/slurm3.jpg)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
![](http://programmersclub.ru/katajpg.jpg)
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
25th
Янв
Проблема с движением 2D человека
Posted by obzor under Delphi
Написал программу передвижения человека по экрану, периодически меняя картинку, создавая эффект движения. Для всех трех картинок использовал компонент TImage. При однократном нажатии на клавишу d человек передвигается по экрану отлично т.е. все три картинки меняются в нужной последовательности! Но если её удерживать, появляются только две картинки из трех.
![]() |
Man.zip (3.09 Мб) |
В переменную BM:TBitMap загружается картинка. TBitMap по сути растр, и в него можно грузить картинки bmp формата.
Сначала для переменной BM нужно выделить память. Это делается
строкой
BM:=TBitMap.Create;
Далее нужно загрузить в нее картинку. Это делается строкой
BM.LoadFromFile('путь и имя файла с расширением');
Правда, нужно было ещё добавить структуру «try finally».
Строка
if key=39 then
говорит о том, что если нажали «стрелка вправо, то»
39- её код в ASCII.
Теперь мы должны взять определенную область с нашей картинки.
За это отвечает строка
BitBlt(Form1.Canvas.Handle,0,0,107,136,
BM.Canvas.Handle,kadrx*107,Kadry*136,SRCCOPY)
Эта функция копирует (если последний параметр равен SRCCOPY) растровую область из источника в приемник. Она может не просто копировать, но и инвертировать цвета, копировать маски, но должны стоять другие значения.
Параметры этой функции:
1) дескриптор приемника (Handle) типа HDC;
2) координата Х левого верхнего угла области, в которую копируем;
3) тоже самое, только для Y;
4) размер области приемника по Х;
5) размер области приемника по Y;
6) дескриптор источника (Handle[\b]) типа HDC;
7) координата Х левого верхнего угла области, из которой копируем;
8) тоже самое, только для Y;
9) код растровой операции.
Ну, и при закрытии программы нужно освободить память, выделенную под нашу картинку.
Это делает строка
BM.Free
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
![пеллетные котлы](http://programmersclub.ru/respective.jpg)
пеллетные котлы
![пеллетный котел](http://programmersclub.ru/emtas.jpg)
Пеллетный котел Emtas
![форум программистов](http://programmersclub.ru/banf336х280.gif)
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)