@IzeBerg

Как из программы на C# создать оверлей (на подобии RaidCall)?

Мне нужно создать небольшое окошко внутри игры (игра на DirectX 9), в окошке 1 кнопка и 1 лист-бокс и 1 текст-бокс, все это должно вызываться на определенное сочетание клавиш (слушателя уже сделал, осталось написать код на нажатие этих клавиш).

Оверлей на подобии Owerflow или RaidCall.

Но вот вопрос, как? Я весь гугл перелопатил - нигде нормально не объясняется.

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

P.s. Видел несколько реализаций на C++, но я в нем полный ноль и ничего понять не смог.
  • Вопрос задан
  • 7308 просмотров
Пригласить эксперта
Ответы на вопрос 1
aush
@aush
Делал нечто подобное. Суть в том, что у формы есть стили, которые надо задать через WinAPI. При установке этих стилей на форме можно будет рисовать, она будет отображаться поверх всех окон, но при этом будет прозрачна для мыши. Мне не нужны были контролы на форме, поэтому я к тому же делал ее и визуально прозрачной и просто рисовал на ней через Graphics (в итоге получался как раз описанный вами эффект оверлея, когда во время игры поверх нее в углу отображалась некоторая информация и по нажатию горячей клавиши можно было переключать различные варианты индикации), можете поэксперементировать, но, в любом случае, вы можете заменить ваши контролы на горячие клавиши, а на форме только рисовать/выводить текст.

Ознакомьтесь с этой статьей - www.codeproject.com/KB/vb/ClickThroughWindows.aspx
Если после прочтения все еще будет что-то не понятно, по крайней мере будете знать в каком направлении гуглить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы