|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
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,834
|
А на -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,834
|
Ну вот, дело опять в прокладке оказалось.
В разработке: воспроизводственный контур ИТ
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Различие кода 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 |