|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.07.2011, 13:30 | #1 |
Пользователь
Регистрация: 27.07.2011
Сообщений: 15
|
Поворот боевых единиц
Приветствую, игроделы!
Пишу простую игру жанра "Стратегия". Вопрос в том, какими средствами реализовать поворот боевых единиц (на любой угол). Понимаю, что поворачивать нужно их изображения, но как? Использую C++/Win32/GDI+. Пробовал использовать метод DrawImage класса Graphics, который принимает три точки, как описано здесь: http://www.rsdn.ru/article/gdi/gdiplus2mag.xml#EPDAE (пункт 2), но изображение не только поворачивается, но еще и растягивается. |
28.07.2011, 16:01 | #2 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 53
|
математика поворота- умножение на матрицу поворота то есть x:=x*cos(t)+y*sin(t), y:=-x*sin(t)+y*cos(t), и многие так и пушут, вот лично нагугленное правда на delphi
http://www.programmersforum.ru/showt...F2%E8%ED%EA%E8 http://www.delphisources.ru/pages/fa...ate_image.html http://www.cyberforum.ru/delphi-begi...read52559.html Есть простой эмпирический способ сдвинуть изоражение,повернуть, потом передвинуть. Думаю расширение отпадет если отцентрировать изображение от начала координат, или в начало поставить точку А
Герои меча и магии собственного производства http://invizor007.000webhostapp.com/...1/hi_v1_3a.rar
Личный сайт http://invizor007.000webhostapp.com/ |
28.07.2011, 16:29 | #3 |
Пользователь
Регистрация: 27.07.2011
Сообщений: 15
|
Я пробовал использовать матрицу поворота в GDI+. Но так прокатывает только с графической поверхностью (класс Graphics), т.е. поворачивается она, а мне нужно, чтобы поворачивалось только изображение.
Код:
Знатоки GDI+, отзовитесь! Спасибо, попробую так, если в ближайшее время стандартных методов для поворота не найду. Последний раз редактировалось Corus; 28.07.2011 в 16:35. |
28.07.2011, 16:45 | #4 |
Пользователь
Регистрация: 14.04.2011
Сообщений: 60
|
Возможно проще будет создать несколько разных картинок и просто подгружать их в Image?
|
28.07.2011, 17:41 | #5 |
Пользователь
Регистрация: 27.07.2011
Сообщений: 15
|
|
28.07.2011, 17:55 | #6 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Ага, и по TImage для каждого юнита
пыщь
|
28.07.2011, 20:54 | #7 |
Пользователь
Регистрация: 14.04.2011
Сообщений: 60
|
хм, ну 360 не стоит, можно ограничиться меньшим числом.
Возможно вам и правда нужны все 360 градусов, тогда собственно продолжайте искать функцию поворота или пишите сами) TImage то для каждого зачем, пусть на буферном кадре изображение рисуется из памяти и выводится на экран, одного объекта вполне достаточно |
28.07.2011, 21:07 | #8 |
Пользователь
Регистрация: 27.07.2011
Сообщений: 15
|
Вопрос остается открытым.
|
28.07.2011, 23:07 | #9 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Можно совместить оба варианта - поворот осуществлять не на 360, а на 90 градусов картинку можно обратить симметрично...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
02.08.2011, 11:27 | #10 |
Пользователь
Регистрация: 11.03.2007
Сообщений: 92
|
2Corus:
Попробуйте этот код. Она даёт три точки отрисовки изображения. Если вы работаете с заголовочными файлами в которых есть класс TGPGraphics, то используйте функцию Код:
Код:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
поворот изображения на форме (либо поворот файла с картинкой) | mystiql | Microsoft Office Access | 2 | 21.06.2011 22:03 |
массив из единиц и нулей | dodomenos | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 03.03.2011 00:08 |
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м | Beren42 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 14.12.2010 17:44 |
Конвертер денежных единиц | vmilyoshin | Помощь студентам | 6 | 16.04.2010 11:07 |
Найти сумма единиц | Bayram_662 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 22.10.2009 22:11 |