|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.08.2014, 08:16 | #1 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Глюк в PlgBlt(WINAPI C++)
Делаю игру на с++. Для вывода спрайта на экран и поворота использую функцию PlgBlt.
HANDLE hLoadBitmap4 = LoadImage(NULL, L"MASK.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); PlgBlt(hdcBuffer, pt, hdcLoad, 0, 0, TANKWIDTH, TANKHEIGHT, (HBITMAP)hLoadBitmap4, 0, 0); всё выводит, поворачивает по часовой и против часовой стрелки на 360 градусов норм, НО при повороте изображения ровно на 180 градусов происходит глюк. Изображение поворачивается норм а маска выводится не повернутой. На одном форуме нашел подобную тему за 2007 год, однако там не ответили на вопрос. На англоязычном форуме тоже тема подобная висит никто ничего не может подсказать... Добавил картинку, смотреть ниже Последний раз редактировалось tolikprankster; 26.08.2014 в 23:51. |
26.08.2014, 18:35 | #2 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Неужели никто не юзал данную функцию?
|
26.08.2014, 19:33 | #3 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
при повороте на 360 градусов ваще ниче не происходит.
99% там внутри что-то такое angle = angle % 360; С чего ты взял что при повороте изображения должна поворачиваться маска? Где-то в документации такое написано? |
26.08.2014, 19:51 | #4 | |||
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Цитата:
Цитата:
угол предусмотрел. Но проблема не в этом if(angle > 360) angle = 0; Цитата:
Последний раз редактировалось tolikprankster; 26.08.2014 в 20:38. |
|||
26.08.2014, 23:50 | #5 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Вот картинка, поворачивает на все стороны без глюков, КРОМЕ 180 градусов(слева вверху - 181 градус!!!):
|
27.08.2014, 01:28 | #6 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
А на -180° как?
|
28.08.2014, 05:22 | #7 |
Пользователь
Регистрация: 09.02.2013
Сообщений: 60
|
Проблема решилась.
Дело в том что координаты точек расчитывал по формуле: p[0].x = int(x0 + (x1 - x0) * cos(a) - (y1 - y0) * sin(a)); p[0].y = int(y0 + (y1 - y0) * cos(a) + (x1 - x0) * sin(a)); сменил тип переменных x1,x0,y1,y0 с Double на int. Угол a при этом оставил double. баг прошел. |
28.08.2014, 13:25 | #8 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Ну вот, дело опять в прокладке оказалось.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) | Артём1991 | Помощь студентам | 0 | 25.03.2012 17:13 |
PlgBlt | Victor1963 | Помощь студентам | 1 | 01.03.2012 10:09 |
Глюк )) | theos | О форуме и сайтах клуба | 9 | 08.01.2008 17:44 |