Полноэкранная мышь C # XNA 4.0 переходит на второй монитор

Заголовок как раз обо всем говорит. Я являюсь производным от класса XNA Game и устанавливаю IsMouseVisible = true. У меня есть установка с двумя экранами, при этом дополнительный дисплей расширяется от основного. Я установил свою игру в полноэкранный режим (GraphicsDeviceManager.IsFullScreen = true). Все работает нормально и инициализирован полноэкранный режим. Единственная проблема, с которой я столкнулся, это то, что мышь не остается привязанной в полноэкранной игре. Как только он достигает края полноэкранной игры, он плавно переходит на дополнительный монитор. Это ожидаемое поведение?

Я использую Mouse.GetState () для получения информации о мышке в каждом кадре в том же потоке, в котором работает моя игра.

Я даже пробовал устанавливать Mouse.WindowHandle = GameWindowHandle перед каждым вызовом GetState, но это ничего не меняет.

Любые идеи? Или это ожидаемое поведение, и мне нужно самому зажать мышь в полноэкранной области?

С уважением, Риаан


person Riaan Oberholzer    schedule 06.06.2012    source источник


Ответы (1)


Да, именно так, прижмите указатель мыши к экрану, на котором вы хотите, чтобы он оставался включенным. Это похоже на подход, который я (и многие другие) использую, когда реализую курсоры спрайтов для своих игр. Я прячу системную мышь и зажимаю ее в центре экрана, чтобы она не отображалась на других мониторах.

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

person A.R.    schedule 06.06.2012
comment
А. Спасибо за ответ, значит, я не могу использовать системные значки для мыши? Атм я просто загружаю файлы ico (некоторые из них анимированные) и они автоматически отображаются системным курсором, удобно! Могу ли я все еще сделать это, или это нужно будет поместить в изображения и отобразить с помощью spritebatch в скрытой позиции мыши ... - person Riaan Oberholzer; 06.06.2012
comment
Нет, вы можете использовать системные значки, но только если системная мышь видна. Однако вам могут понадобиться свои собственные спрайты, если вы хотите делать несистемные вещи, например, настраивать альфа-канал, использовать большое растровое изображение и т. Д. В этом случае системный курсор скрывается, и вместо него используется ваш. - person A.R.; 06.06.2012