Создание прозрачного наложения в 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}"