
Виртуальная экранная клавиатура, реализация через GDI+
Practical_Developer 15 минут назад Виртуальная экранная клавиатура, реализация через GDI+ Уровень сложности Средний Время на прочтение 3 мин Охват и читатели 285 .NET * C# * Windows * Из песочницы После получения задачи...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Practical_Developer 15 минут назад Виртуальная экранная клавиатура, реализация через GDI+ Уровень сложности Средний Время на прочтение 3 мин Охват и читатели 285 . NET * C# * Windows * Из песочницы После получения задачи использования в своём проекте экранной клавиатуры для сенсорного устройства я начал искать способы её реализации. Из возможных вариантов под Windows мне повстречались такие решения: Встроенная клавиатура TabTip, osk.
exe - не имеют возможностей гибкой кастомизации, появляются по произвольным координатам экрана и имеют только определенный размер. Бесплатные решения - у таких подходов страдала реализация и компоненты выглядели даже похуже встроенной Windows клавиатуры. Платные аналоги - действительно являются хорошей альтернативой со множеством необходимых настроек, но не было никакой бюджетной возможности покупать профессиональные решения.
Технические детали
В итоге своя клавиатура была создана с нуля — полностью на GDI+. Эта статья - переработанная и дополненная версия моего материала, опубликованного в 2017 году на CodeProject. Описание решения В проекте реализовано два пользовательских элемента: самостоятельно отрисованная клавиатура-эмулятор и текстовое поле с этой всплывающей клавиатурой.
Приложенный пользовательский WinForms компонент может быть настроен под нужды интерфейса вашего приложения и позволяет манипулировать внешним видом/дизайном и поведением. Настройка компонента VirtualKeyboard - пользовательский WinForms-контрол создан, в основном с помощью программироваания GDI+. Этому элементу управления присуще следующие свойства: FirstRowCustomButtons … FifthRowCustomButtons - списки клавиш соответствующего ряда.
признак состояния клавиш клавиатуры: Shift, CapsLock, Alt ... (ShiftState, AltState …). возможность скрыть/показать функциональные кнопки: Delete, Tab, Ctrl, кнопки со стрелками, цифровые кнопки (ShowDel, ShowTab … ).
Отраслевые последствия
визуальные настройки (цвет фона, шрифты). показывать или нет только цифровой вариант (IsNumeric). Каждая клавиша клавиатуры представлена классом-объектом VirtualKbButton с отдельными свойствами: верхний и нижний текст (TopText/BottomText).
шрифты для верхней и нижней части (TopFont/BottomFont). признак, может ли кнопка отправлять команду (CanSendCommand). тег и имя (Tag, ButtonName).
изображение (Picture). Изменение раскладки, работа с клавишами По умолчанию создаётся стандартная английская раскладка, но её можно полностью заменить. Код для создания раскладки по-умолчанию расположен в классе KeyboardLayout .
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





