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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Требуется в заданном месте экрана вывести спрайт повернутный на заданный угол относительно своего центра.
Для того чтобы вывести вращающийся относительно своего центра спрайт по координатам 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2009, 20:42
Ответы с готовыми решениями:

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

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

Sfml: вращение спрайта относительно центра
Хочу узнать как вращать спрайт относительно своего центра если задать это :p.sprite.setRotation(1); спрайт вращается относительно...

4
 Аватар для d0s'A
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
14.10.2009, 11:54
Может быть поможет http://www.codeproject.com/KB/... prite.aspx
1
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 65
15.10.2009, 07:52  [ТС]
Спасибо за совет!
Посмотрю как-нибудь.
Для поворота я применил Sprite.Transform
А для отрисовки обычный Sprite.Draw
0
0 / 0 / 0
Регистрация: 10.09.2009
Сообщений: 65
25.10.2009, 20:42  [ТС]
При применении Sprite.Transform каждой текстуре сопоставил свой объект Sprite. В итоге в цикле рисования между Device.Begin() и Device.End() память выделяется для каждого объекта Sprite в момент Sprite.Begin(), а размер выделяемой памяти соответствует размеру окна в которое совершается вывод (как я понимаю эта область под Альфа - канал) в моем случае приблизительно 400 кБайт. Сама текстура занимает 64 кБайт, и такое неэкономное использование памяти неприемлемо. Вопрос с поворотом спрайта при помощи Sprite.Draw2D остается актуальным.
0
conf1ict
06.01.2010, 02:24
Вот тут кой чего попробовал написать
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 - угол вращения в градусах по часовой стрелке.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2010, 02:24
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru