Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2008, 10:29   #1
Илья PHoeNiX
Учиться x 3 )
 
Аватар для Илья PHoeNiX
 
Регистрация: 06.06.2008
Сообщений: 5
Вопрос Процедура поворота изображения

Здравствуйте.
Во вложенном текстовом файле процедура вращения изображения.
Объясните пожалуйста словесный алгоритм ее работы в целом и подпрограмм, которые содержатся в процедуре.
Заранее спасибо
Вложения
Тип файла: doc procedure RotateBitmap.doc (28.5 Кб, 25 просмотров)
Илья PHoeNiX вне форума Ответить с цитированием
Старый 08.06.2008, 11:32   #2
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

А вам именно эта процедура нужна? Просто есть на много проще.
Kostia вне форума Ответить с цитированием
Старый 08.06.2008, 11:49   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Все понятно, раз там sin и cos, объясняю не глядя.

Вращение это анимация, один кадр сменяет другой. Алгоритм поворота строит новый кадр.
Принцип алгоритма - тригонометрия.
Для каждой точки на новом изображении нужно найти точку на исходном, и перенести ее, так мы получим 100 процентное заполнение. Не наоборот, это важно, если искать новое место для исходной точки на новом изображении, то будут пробелы, это связано с округлением результатов от функций синуса или косинуса. Это основная фишка, остальное - детали, не имеющие к вращению прямого отношения.
В этом примере перенос пикселей происходит не поштучно, а с помощью ScanLine. Ф-я ScanLine копирует в буфер всю строку пикселей, представляется это все в виде последовательности байт, первый байт - красный цвет первого пикселя (R,G,B), второй байт - зеленый (R,G,B), третий - синий, четвертый байт - красный цвет второго пикселя и так далее. Но это уже особенности работы с битмапами, к вращению не относятся, можно и так переносить: Canvas1.Pixels[x1,y1]:= Canvas2.Pixels[x2,y2].
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 08.06.2008, 13:59   #4
Илья PHoeNiX
Учиться x 3 )
 
Аватар для Илья PHoeNiX
 
Регистрация: 06.06.2008
Сообщений: 5
По умолчанию

mutabor, cпасибо вам!

Последний раз редактировалось Илья PHoeNiX; 08.06.2008 в 14:38.
Илья PHoeNiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29
Оконная процедура HunterMan Win Api 5 04.06.2008 12:10
Процедура не работает Михаил Юрьевич Общие вопросы Delphi 4 03.06.2008 07:22
Процедура () GAGARIN-NEW Помощь студентам 3 17.12.2007 21:42
процедура Sergik1977 Паскаль, Turbo Pascal, PascalABC.NET 7 28.10.2007 16:36