Создание прозрачного наложения в C#

Я не уверен, как именно начать этот проект, но мои требования заключаются в следующем (для частей, которые я не уверен, как реализовать):

  • Удерживая нажатой клавишу Tab, должно отобразиться наложение. Отпускание клавиши табуляции должно скрыть наложение. Как бы я запечатлел это глобально? Какой лучший способ проверить, что клавиша Tab все еще удерживается?
  • Наложение должно отображаться поверх всех других приложений. Он не должен отображаться поверх полноэкранного приложения, но было бы оптимальным, чтобы иметь возможность сделать это.
  • Масштабирование разрешения? Не так важно, но было бы неплохо иметь размер шкалы наложения в зависимости от разрешения монитора пользователя.

Я еще не начал это, но какой тип проекта будет лучше для этого? Я думал о WPF над WindowsForms, поскольку он предлагает гораздо больше гибкости с точки зрения представления. Любой совет по вышеуказанным пунктам будет принята с благодарностью!

1 ответ

Решение

В WPF вы можете сделать это следующим образом:

Для обработки глобального ключа TAB в точке входа вашего приложения (обычно App.xaml.cs) запустите этот код:

EventManager.RegisterClassHandler(typeof(UIElement), UIElement.PreviewKeyUpEvent, new KeyEventHandler(OnPreviewKeyUp));

Используйте (Preview)Key(вверх / вниз)Event по мере необходимости, если вы установите e.Handled = true в обработчике Preview, событие прекратит свою маршрутизацию, и никто больше не сможет на него отреагировать.

В OnPreviewKeyUp проверьте, что e.Key == Key.Tabи показать окно наложения, если оно есть.


Подпись обработчика события должна выглядеть так:

private static void OnPreviewKeyUp(object source, KeyEventArgs e)


Теперь для кликабельной части создайте окно и установите фон наложения на null:

WindowStyle="None" AllowsTransparency="True" Background="{x:Null}"
Другие вопросы по тегам