Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 3,684
· Новый пользователь: headron
Последние фото
Эх, чуть не проспал закрытие.
Эх, чуть не проспал ...
Альбом: XNA Engine

GB
GB
Альбом: XNA Engine

South Park Coon & Friends
South Park Coon & Fr...
Альбом: XNA Games

Блоги
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
dampirik
» Реклама,статистик...
Chort
» XNA и StartCoroutine
Chort
» Curve Class
dampirik
» Реклама, статисти...
dampirik
» Увеличение скорос...
dampirik
» Реклама, статисти...
general
» Распаковка DxtCom...
general
» Как работать с XN...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Статистика посещений:

Просмотр темы
 Распечатать тему
Картинка системного курсора в XNA
Phenom
#1 Распечатать сообщение
Опубликовано 13.03.2010 14:35:17
Аватар пользователя

Специалист


Сообщений: 60
Зарегистрирован: 20.02.10

Скажите господа гуру, как в XNA
установить свою картинку системного курсора?
В C++ я делал вот так:

Загрузить источник  GeSHi: C#
  1. wc.hCursor = LoadCursorFromFile("MyCursor.cur");
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.2


А как тут?

P.S.
Выводить курсор просто спрайтом через Draw не предлагать..
Изменил(а) Phenom, 13.03.2010 18:23:33
 
D-SaN
#2 Распечатать сообщение
Опубликовано 13.03.2010 15:09:48
Специалист


Сообщений: 154
Зарегистрирован: 18.01.10

как я понял тебя интересует не стандартный курсор винды, а свой нарисованый... Я только через draw его выводил, и в update обновлял позицию..
 
Phenom
#3 Распечатать сообщение
Опубликовано 13.03.2010 15:57:48
Аватар пользователя

Специалист


Сообщений: 60
Зарегистрирован: 20.02.10

Выводить через Draw это плохо..
 
dampirik
#4 Распечатать сообщение
Опубликовано 13.03.2010 16:01:44
Аватар пользователя

Ветеран


Сообщений: 957
Зарегистрирован: 21.02.10

Обьявили:
Загрузить источник  GeSHi: C#
  1. SpriteBatch m_mouseSprite = null;
  2. Texture2D m_cursorTexture = null;
  3. Vector2 m_mousePosition = Vector2.Zero;
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.2

Загрузили:
Загрузить источник  GeSHi: C#
  1. m_mouseSprite = new SpriteBatch(this.GraphicsDevice);
  2. m_cursorTexture = this.Content.Load<Texture2D>("Textures/cursor");
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.2

Обновили:
Загрузить источник  GeSHi: C#
  1. MouseState m_lastState = Mouse.GetState();
  2. m_mousePosition = new Vector2(m_lastState.X, m_lastState.Y);
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.2

Вывели:
Загрузить источник  GeSHi: C#
  1. m_mouseSprite.Begin();
  2. m_mouseSprite.Draw(m_cursorTexture, m_mousePosition, Color.White);
  3. m_mouseSprite.End();
Добавлено за 0.004 секунд, используя GeSHi 1.0.8.2

Изменил(а) dampirik, 13.03.2010 16:03:02
 
VAB
#5 Распечатать сообщение
Опубликовано 13.03.2010 16:10:19
Аватар пользователя

Администратор


Сообщений: 1431
Зарегистрирован: 21.07.09

Phenom написал:
Выводить через Draw это плохо..


А почему выводить через Draw - это плохо??? лично я не вижу никакой разницы между тем, что ты напишешь код сам или ХНА сделает это внутрене)))
 
Phenom
#6 Распечатать сообщение
Опубликовано 13.03.2010 18:17:17
Аватар пользователя

Специалист


Сообщений: 60
Зарегистрирован: 20.02.10

Неужели вы не видите разницы в системном курсоре и курсоре который
привязан к скорости обновления всей сцены?
Я много раз видел, как при таком способе курсор тормозил и было ужасно
неприятно даже двигать его, если оставить системный, то он всегда будет
так-же быстро перемещаться по экрану.

Только вот я не пойму зачем мне тут показываете как надо выводить текстуры )))
Это уже как то унизительно.. я ж не полный дурак, давно уже умею это.
 
Phenom
#7 Распечатать сообщение
Опубликовано 13.03.2010 18:21:26
Аватар пользователя

Специалист


Сообщений: 60
Зарегистрирован: 20.02.10

VAB написал:
Phenom написал:
Выводить через Draw это плохо..


А почему выводить через Draw - это плохо??? лично я не вижу никакой разницы между тем, что ты напишешь код сам или ХНА сделает это внутрене)))


Да ты не понял.. Когда я меняю картинку курсора, то я уже не вывожу его,
операционная система это делает за меня, всё, я забываю о нём. Так сделано
во многих коммерческих играх, может даже в большинстве.
 
Phenom
#8 Распечатать сообщение
Опубликовано 13.03.2010 18:36:47
Аватар пользователя

Специалист


Сообщений: 60
Зарегистрирован: 20.02.10

Я пока сделал так:

this.IsMouseVisible = true;

Надо просто свой *.cur подгрузить..
 
Phenom
#9 Распечатать сообщение
Опубликовано 13.03.2010 19:01:02
Аватар пользователя

Специалист


Сообщений: 60
Зарегистрирован: 20.02.10

Так, удалось вот что сделать:
Подключить:
using System.Runtime.InteropServices;

[ DllImport("User32.dll" ) ]
private static extern IntPtr LoadCursorFromFile(String str) ;

IntPtr MyCursor = LoadCursorFromFile("MyCursor.cur" ) ;



Но при подключении System.Windows.Forms с объявлением Cursor,
возникают конфликты с XNA.. Angry
Изменил(а) Phenom, 13.03.2010 19:13:45
 
dampirik
#10 Распечатать сообщение
Опубликовано 14.03.2010 00:47:19
Аватар пользователя

Ветеран


Сообщений: 957
Зарегистрирован: 21.02.10

Это уже как то унизительно.. я ж не полный дурак, давно уже умею это.

Ну я тут не давно... как говориться: чем мог...
 
wlastas
#11 Распечатать сообщение
Опубликовано 14.03.2010 18:41:22
Специалист


Сообщений: 94
Зарегистрирован: 28.03.09

работающий вариант:
выводить картинку на свою Wondows Form))
в этом случае получается использовать все компоненты Form (например для своего редактора) и в том числе получаем доступ к Form курсору (который и есть системный)
 
Phenom
#12 Распечатать сообщение
Опубликовано 14.03.2010 19:57:12
Аватар пользователя

Специалист


Сообщений: 60
Зарегистрирован: 20.02.10

Да я уже использую картинку курсора по-умолчанию.
this.IsMouseVisible = true;
Надоело биться лбом в запреты Wink
 
beaver
#13 Распечатать сообщение
Опубликовано 14.03.2010 20:13:16
Аватар пользователя

Администратор


Сообщений: 1772
Зарегистрирован: 22.02.09

Phenom, попробуйте осуществить свой финт на XBOX.
Все-таки, XNA создает приложения для консоли, а не для винды.
Про курсоры: грузите cur, как Вам подсказали, отлавливайте сообщения ОС, если уж приложение заточено только для винды.
Вообще: показывать курсоры - дело ОС, и она их показывает поверх вашего окна. Поэтому изначальный вопрос как бы не в теме игростроения. Т.е. вопрос "как в XNA установить свою картинку системного курсора?" немного некорректен.
 
general
#14 Распечатать сообщение
Опубликовано 14.03.2010 20:32:17
Аватар пользователя

Администратор сайта


Сообщений: 3788
Зарегистрирован: 10.02.09

согласен
 
Forevener
#15 Распечатать сообщение
Опубликовано 14.03.2010 22:37:16
Аватар пользователя

Специалист


Сообщений: 87
Зарегистрирован: 22.02.10

Любая отрисовка должна быть в методе Draw. Отрисовка своего курсора через службу Windows - по сути, очень грязный хак.
Единственный вариант - обновление позиции мыши вынести в отдельный поток, чтобы она не зависела от цикла игровой логики. Но отрисовка этой позиции всё равно будет в Draw - и это правильно (для XNA).
Изменил(а) Forevener, 14.03.2010 22:39:28
 
http://virtualize.su
Phenom
#16 Распечатать сообщение
Опубликовано 15.03.2010 06:32:13
Аватар пользователя

Специалист


Сообщений: 60
Зарегистрирован: 20.02.10

Господи да о чём вы говорите?
Я на своей проге в CPP просто вначале менял стандартным методом картинку
курсора и всё, это нормально! Я повторяюсь, что так сделано в большинстве
современных игр! Я не трогаю никаких функций, ничего, просто меняется
картинка ))
Позапускайте игры и увидите, что курсор будет выходить за пределы экрана справа
и снизу, пока он хоть пикселом в окне, а потом его картинка сменится на стандартную
картинку Windows. Это и значит, что просто при попадании на Ваше окно он её меняет
на Вашу. Это предусмотрено ОС! Это нормально! А если он не выходит за пределы экрана,
значит это сделано по-корявому.. как вы предлагаете, просто рисовать картинку курсора
каждый проход.. ну это глупо! Зачем? Когда есть аппаратный курсор Windows. Всё уже
сделано, не надо изобретать велосипед. Тем более уже давным давном поддерживаются
курсоры TrueColor с альфа-каналом. Он ничего визуально не будет отличаться от ваших
текстурных. Ничем.
Неужели никто не заступиться за мою точку зрения?
Изменил(а) Phenom, 15.03.2010 06:35:58
 
Forevener
#17 Распечатать сообщение
Опубликовано 15.03.2010 07:22:03
Аватар пользователя

Специалист


Сообщений: 87
Зарегистрирован: 22.02.10

Я говорю про XNA - такова архитектура, и точки зрения этой архитектуре безразличны.
Вдобавок, программный курсор предоставляет больше возможностей.
 
http://virtualize.su
gregsparrow
#18 Распечатать сообщение
Опубликовано 15.03.2010 07:41:38
Аватар пользователя

Старший специалист


Сообщений: 360
Зарегистрирован: 23.02.09

помню в героях меча и магии последних так сделано, они курсор системный используют, набором своих курсовров подменяют. А вот помню запустил как обливион, у меня он тормозил, так я и мышкой еле елозил там .. скорее всего изза того что они именно спрайт рисовали...

 
Forevener
#19 Распечатать сообщение
Опубликовано 15.03.2010 07:58:37
Аватар пользователя

Специалист


Сообщений: 87
Зарегистрирован: 22.02.10

gregsparrow написал:
помню в героях меча и магии последних так сделано, они курсор системный используют, набором своих курсовров подменяют. А вот помню запустил как обливион, у меня он тормозил, так я и мышкой еле елозил там .. скорее всего изза того что они именно спрайт рисовали...

Самый лучший вариант - это программный курсор с перемещением и отрисовкой в отдельном потоке (как и вся логика ввода, кстати). Но XNA не позволяет сделать нормальную отрисовку в отдельном потоке.
 
http://virtualize.su
general
#20 Распечатать сообщение
Опубликовано 15.03.2010 08:09:08
Аватар пользователя

Администратор сайта


Сообщений: 3788
Зарегистрирован: 10.02.09

а не через чур ли вы мудрите?
 
Перейти на форум:
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

27.08.2014
Я умею немного на asp.net + html и css

22.08.2014
на ASP mvc 3 есть пару проектов. Могу помочь, если нужно. Обидно, если закроется Frown

21.08.2014
я тоже ноль

21.08.2014
Я в вебе только с php занимался да и то на уровне чтоб работало.

21.08.2014
Я в вебе полный ноль…

21.08.2014
Переводить его надо, хоть на ту же азуру. И двиг менять на что-то современное. Если есть веб-разрабы - можем скооперироваться. Один делать не буду.

21.08.2014
не знаю всех нюансов по оплате и все хорошее когда нибудь заканчивается

21.08.2014
А что случилось?

21.08.2014
похоже сайт будет работать до 28го числа

09.08.2014
Апи пока не видел. Но есть приложение в магазине Live Lock Screen BETA, так что думаю скоро будет

08.08.2014
Я про API для Update1. На нем работает это

08.08.2014
А что именно нужно? Чтото и сейчас открыто http://msdn.micro.
...105).aspx

06.08.2014
Кто-нибудь слышал об открытии доступа к Lock Screen Api?

31.07.2014
VPDExpress на базе MVS 2012, ни в какую не ловит исключения. Даже если их сам создаешь. И всех так?

25.07.2014
С днем системного администратора причастных к этой профессии! По случаю - тортик от жены

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,29 секунд 8,709,567 уникальных посетителей