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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2014, 08:16   #1
tolikprankster
Пользователь
 
Регистрация: 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.
tolikprankster вне форума Ответить с цитированием
Старый 26.08.2014, 18:35   #2
tolikprankster
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 60
По умолчанию

Неужели никто не юзал данную функцию?
tolikprankster вне форума Ответить с цитированием
Старый 26.08.2014, 19:33   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

при повороте на 360 градусов ваще ниче не происходит.
99% там внутри что-то такое
angle = angle % 360;

С чего ты взял что при повороте изображения должна поворачиваться маска?
Где-то в документации такое написано?
rrrFer вне форума Ответить с цитированием
Старый 26.08.2014, 19:51   #4
tolikprankster
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 60
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
С чего ты взял что при повороте изображения должна поворачиваться маска?
Где-то в документации такое написано?
Судя по описанию, она накладывает маску на изображение и потом выводит результат. Если так тогда при угле = 180 градусов оно накладывает развернутую на 180 градусов маску и выводит рез-тат

Цитата:
Сообщение от rrrFer Посмотреть сообщение
при повороте на 360 градусов ваще ниче не происходит.
angle = angle % 360;
про 360 я ничего не писал. проблема при повороте на 180 градусов.
угол предусмотрел. Но проблема не в этом
if(angle > 360) angle = 0;

Цитата:
99% там внутри что-то такое
Вот я так тоже думаю, внутри самой функции... Так как на все другие углы - ВСЕ работает, маска поворачивается изобраэение тож

Последний раз редактировалось tolikprankster; 26.08.2014 в 20:38.
tolikprankster вне форума Ответить с цитированием
Старый 26.08.2014, 23:50   #5
tolikprankster
Пользователь
 
Регистрация: 09.02.2013
Сообщений: 60
По умолчанию

Вот картинка, поворачивает на все стороны без глюков, КРОМЕ 180 градусов(слева вверху - 181 градус!!!):
Изображения
Тип файла: jpg баг.jpg (36.0 Кб, 97 просмотров)
tolikprankster вне форума Ответить с цитированием
Старый 27.08.2014, 01:28   #6
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

А на -180° как?
Vapaamies вне форума Ответить с цитированием
Старый 28.08.2014, 05:22   #7
tolikprankster
Пользователь
 
Регистрация: 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.
баг прошел.
tolikprankster вне форума Ответить с цитированием
Старый 28.08.2014, 13:25   #8
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,755
По умолчанию

Ну вот, дело опять в прокладке оказалось.
Vapaamies вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Различие кода 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