Вращение изображения (WinApi)

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

Александр_ФФ
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 23.11.2008 (Вс) 11:09
Откуда: Северодвинск

Вращение изображения (WinApi)

Сообщение Александр_ФФ » 25.09.2009 (Пт) 14:38

Здравствуйте!
В процессе переделки программы ("войны в космосе" viewforum.php?f=15&t=40455) пришлось искать код для вращения изображения. Код, который я нашёл в "кирпичах", довольно медленный, и на мой взгляд там много лишнего. Поэтому написал свой код, который здесь и выкладываю. Так как объект (корабль) не прямоугольный, пришлось рисовать к нему и маску. Задействованы только WinApi функции. Скорость на 1400МГц получается 62 Fps для исходника, и 180 fps для exe. Полный оборот с шагом в 1 градус.
Пример использования:
rotate.rar
У вас нет доступа для просмотра вложений в этом сообщении.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Вращение изображения (WinApi)

Сообщение alibek » 25.09.2009 (Пт) 14:41

Это не кирпич.
Оформи, потом верну.
А пока переношу.
Lasciate ogni speranza, voi ch'entrate.

Александр_ФФ
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 23.11.2008 (Вс) 11:09
Откуда: Северодвинск

Re: Вращение изображения (WinApi)

Сообщение Александр_ФФ » 25.09.2009 (Пт) 15:10

Принято

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращение изображения (WinApi)

Сообщение Mikle » 29.09.2009 (Вт) 14:07

Да и рано этому быть кирпичём. GDI+ вообще за уши притянуто, поворачивается картинка средствами VB, антиалиасинга нет. Это можно сделать многократно быстрее:
У вас нет доступа для просмотра вложений в этом сообщении.

Александр_ФФ
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 23.11.2008 (Вс) 11:09
Откуда: Северодвинск

Re: Вращение изображения (WinApi)

Сообщение Александр_ФФ » 03.10.2009 (Сб) 22:49

Спасибо за программку :)
Пришлось немного переделать, чтобы корабль вращался в любом месте и фон перерисовывался. Скорость упала, но всё равно больше, чем в старой версии (260 fps против 110 fps)
Массив для маски сделал boolean, думаю так сравнение быстрее.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Вращение изображения (WinApi)

Сообщение FireFenix » 23.10.2009 (Пт) 0:51

Перебирал свой хлам на днях... наткнулся на пример поворота картинки в 3х режимах (Point, Pixel, Bit) + АА (вроде как) может кому-нить понадобиться...
У вас нет доступа для просмотра вложений в этом сообщении.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Александр_ФФ
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 23.11.2008 (Вс) 11:09
Откуда: Северодвинск

Re: Вращение изображения (WinApi)

Сообщение Александр_ФФ » 23.10.2009 (Пт) 12:35

FireFenix писал(а):Перебирал свой хлам на днях... наткнулся на пример поворота картинки в 3х режимах (Point, Pixel, Bit) + АА (вроде как) может кому-нить понадобиться...

Спаисбо за программку, хоть АА увидел, как реализован. 8)
Всё же у Mikle код более оптимизирован - поыстрее работает.
На чёрном фоне всё крутится хорошо, а если над картинкой, да в любом месте - ещё фон восстанавливать. Для себя открыл (хотя и так ясно ), что восстанавливать фон намного быстрее bitblt откуда-нибудь, чем Picture.cls :idea: :)

One@as_76
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 27.02.2010 (Сб) 17:09
Откуда: Ярославль

Re: Вращение изображения (WinApi)

Сообщение One@as_76 » 01.03.2010 (Пн) 16:10

Mikle писал(а):Да и рано этому быть кирпичём. GDI+ вообще за уши притянуто, поворачивается картинка средствами VB, антиалиасинга нет. Это можно сделать многократно быстрее:

А можно код выложить этой проги?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Вращение изображения (WinApi)

Сообщение Viper » 01.03.2010 (Пн) 16:17

One@as_76 писал(а):
Mikle писал(а):Да и рано этому быть кирпичём. GDI+ вообще за уши притянуто, поворачивается картинка средствами VB, антиалиасинга нет. Это можно сделать многократно быстрее:

А можно код выложить этой проги?
Так вложение же есть в цитируемом сообщении.
Весь мир матрица, а мы в нем потоки байтов!

Александр_ФФ
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 23.11.2008 (Вс) 11:09
Откуда: Северодвинск

Re: Вращение изображения (WinApi)

Сообщение Александр_ФФ » 01.03.2010 (Пн) 18:47

Это немного поновей.
Но я уже на DirectX перешёл ;)
У вас нет доступа для просмотра вложений в этом сообщении.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Вращение изображения (WinApi)

Сообщение Mikle » 01.03.2010 (Пн) 22:10

А ещё более оптимизированный софтовый вариант есть тут:
viewtopic.php?f=28&t=38123


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList