Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 65
1

Вращение спрайта sprite.Draw2D

12.10.2009, 20:42. Показов 4583. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Требуется в заданном месте экрана вывести спрайт повернутный на заданный угол относительно своего центра.
Для того чтобы вывести вращающийся относительно своего центра спрайт по координатам 100,0 пишу:
C#
1
2
3
4
5
        public void Draw(Sprite sprite, Texture t, Rectangle r)
        {
            sprite.Draw2D(t, new Point(r.Width/2,r.Height/2), 
            angle, new Point((int)100, (int)0), Color.FromArgb(255, 255, 255, 255));
        }
r-прямоугольник, взятый с размеров текстуры
текстура загружена из файла, размер изображения в файле является степенью двойки.

В итоге спрайт вращается относительно левого верхнего угла окна по окружности радиусом 100.
Может подскажете что не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2009, 20:42
Ответы с готовыми решениями:

Старанная конструкция с using (Sprite s = new Sprite(device) {}
Встречаю несколько раз достаточно странную для меня конструкцию(старнная потому что не знаю); ...

Вращение спрайта в след курсора
Есть на первый взгляд тривиальнейшая задача: вращать спрайт в зависимости от положения курсора....

Sfml: вращение спрайта относительно центра
Хочу узнать как вращать спрайт относительно своего центра если задать это...

Вращение спрайта со смещением центра (центр в углу)
Как мне центр спрайта изменить, а то он в верхнем левом углу .. у меня там рука... и при повороте...

4
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
14.10.2009, 11:54 2
Может быть поможет http://www.codeproject.com/KB/... prite.aspx
1
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 65
15.10.2009, 07:52  [ТС] 3
Спасибо за совет!
Посмотрю как-нибудь.
Для поворота я применил Sprite.Transform
А для отрисовки обычный Sprite.Draw
0
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 65
25.10.2009, 20:42  [ТС] 4
При применении Sprite.Transform каждой текстуре сопоставил свой объект Sprite. В итоге в цикле рисования между Device.Begin() и Device.End() память выделяется для каждого объекта Sprite в момент Sprite.Begin(), а размер выделяемой памяти соответствует размеру окна в которое совершается вывод (как я понимаю эта область под Альфа - канал) в моем случае приблизительно 400 кБайт. Сама текстура занимает 64 кБайт, и такое неэкономное использование памяти неприемлемо. Вопрос с поворотом спрайта при помощи Sprite.Draw2D остается актуальным.
0
conf1ict
06.01.2010, 02:24 5
Вот тут кой чего попробовал написать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void DrawSpinSprite(D3D.Sprite sprite, D3D.Texture text, int posX, int posY, int pX, int pY, int angle)
        {
            float ang, ang2; double r; int cX, cY;
            pX += posX;
            pY += posY;
            r = Math.Sqrt(pX * pX + pY * pY);
            ang = (float) Math.Atan2(pY, pX);
            ang2 = (float)(angle * Math.PI / 180);
            ang -= ang2;
            cX = pX - (int)(r * Math.Cos(ang));
            cY = pY - (int)(r * Math.Sin(ang));
            sprite.Draw2D(text, new Point(cX, cY), ang2, new Point(posX, posY), Color.White);
        }
posX, posY - координаты верхнего левого угла спрайта,
pX, pY - относительно какой точки спрайта вращать будем,
angle - угол вращения в градусах по часовой стрелке.
06.01.2010, 02:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2010, 02:24
Помогаю со студенческими работами здесь

Реализовать вращение 3D объекта как вращение камеры
Существует некий объект в 3D пространстве (для примера используем куб). В исходном положении это...

C# Sprite
Как пользоватся Sprite в C#? Например необходимо вывести изображение размером 10x10 пикселей, с...

SFML Sprite
Main.h #include <SFML/Graphics.hpp> using namespace std; class Main { private: int x;

Изображение в Sprite
Доброго времени суток, мне нужно добавить на кнопку публичный спрайт, но как мне в этот спрайт...

Unity sprite renderer
Как можно обледенить огромное количество спрайтов в один объект по типу чанков чтобы не грузить...

Фиксирование размеров Sprite
Добрый день! Имеется объект унаследованый от Sprite. Если на нем ничего не нарисовано, то его длина...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru