Windows border что это
Input Director
Из всех рассматриваемых в этом материале программ Input Director, предназначенная для работы в среде Windows, наиболее насыщена всевозможными настройками и вспомогательными функциями. С одной стороны, это дает дополнительную свободу пользователю, с другой — на первых порах наверняка будет приводить к некоторой путанице и поиску на многочисленных вкладках необходимых параметров, тем более что интерфейс англоязычный (впрочем, как и у остальных участников данного обзора). Но для наиболее простых и типичных ситуаций, как, скажем, подключение второго компьютера для одновременного использования с основным (постоянно для работы или оперативно с целью настройки, отладки), все выглядит достаточно просто. Основное — разобраться, что Input Director оперирует понятиями главного (master) и подчиненного (slave) компьютеров. Управление подчиненными осуществляется с помощью клавиатуры и мыши на главном, который фактически только этим и отличается, если не считать, что на нем также выдается большая часть системных оповещений.
Рис. 1. На каждом компьютере с Input Director должен быть настроен главный либо подчиненный режим, а в некоторых случаях даже оба.- все компьютеры;
- только из определенной подсети (определяется базовым адресом и маской);
- только конкретные компьютеры (с указанными сетевыми именами).
В безопасной среде, например в домашних условиях, годится любой вариант. Первые два также удобны при использовании опции автопереключения режимов главный/подчиненный (вкладка Global Preferences) — смысл ее в том, что после надлежащей настройки роль мастера будет автоматически переходить к тому компьютеру, на котором в данный момент используются органы управления (мышь и клавиатура).
На вкладке Slave Configuration также можно сразу включить или отключить синхронизацию заставки и блокирования системы, а также при необходимости включить шифрование (AES 128/192/256) трафика.
Для работы системы этих настроек достаточно. Теперь нужно вернуться на вкладку Main и нажать кнопку Enable as Slave.
Подготовка главного компьютера выполняется в общем «симметрично» на вкладке Master Configuration. Необходимо указать все подчиненные компьютеры, причем в индивидуальном порядке. Внизу экрана щелкаем на кнопке Add и в открывшемся окне Slave Configuration вводим сетевое имя (или IP-адрес) — этого уже достаточно и можно нажимать кнопку ОК. Однако при необходимости здесь сразу можно выбрать «горячую» клавишу, по которой ввод будет переключаться на данный компьютер; указывать число мониторов и их взаимное положение (просто перетаскивая мышкой); активировать шифрование трафика. Позже также можно будет вернуться к этому окну и внести необходимые коррективы.
Рис. 3. Настройка главного режима: нажимая кнопку Add, нужно добавить подчиненные компьютеры и корректно описать их размещение друг относительно друга.После настройки всех подчиненных компьютеров на вкладке Master Configuration рекомендуется правильно расположить все описанные компьютеры так, чтобы рисунок отражал их физическое размещение. Благодаря этому можно будет совершенно естественно «перетягивать» мышь на необходимый компьютер через соответствующий край текущего монитора. Впрочем, этот режим отключаемый — если для перенаправления ввода планируется использовать только «горячие» клавиши, то описывать расположение мониторов нет необходимости.
Рис. 4. Input Director располагает наиболее удобной поддержкой мультимониторных конфигураций.Наконец, нужно также перейти на вкладку Main и нажать кнопку Enable as Master. Теперь все готово к использованию Input Director. В программе очень удачно реализована визуализация пересечения края экрана монитора, смежного с другим компьютером. Переключение ввода будет сопровождаться расходящимися «кругами на воде» вокруг курсора мыши, так что «потеряться» практически невозможно. Этот же эффект будет наблюдаться при автоматической смене режима главный/подчиненный (плюс — всплывающее оповещение в системной области).
Рис. 5. Такой визуальный эффект сопровождает переключение ввода.Кроме собственно управления несколькими компьютерами Input Director также обеспечивает «совместный» буфер обмена. Благодаря этой функции можно легко переносить любую информацию с одного компьютера на другой, разработчики заявляют также возможность файлового обмена через копирование/вставку, однако в моем случае (Windows 7) она так и не заработала, несмотря на то, что в описании последних версий сообщается об исправлении соответствующих ошибок.
Как говорилось, обилие дополнительных параметров располагает к тонкой настройке программы. Не берусь описывать все возможности, остановлюсь только на тех, которые показались мне наиболее интересными.
Рис. 6. Вкладка Master Preferences содержит огромное число настроек, влияющих на работу всей системы, — они даже не помещаются в окне, обратите внимание на полосу прокрутки. На данной иллюстрации представлена группа параметров, управляющих переключением ввода с помощью мыши.На вкладке Master Preferences (на главном компьютере) можно выбрать наиболее удобный способ перехода мыши через край экрана — для этого предназначена группа параметров Transition Options. По умолчанию мышь просто пересекает край экрана, за которым находится следующий компьютер, это может быть не всегда удобно. Поэтому данную операцию можно проделывать либо с дополнительно нажатой клавишей, либо после задержи курсора в крайнем положении на некоторое (регулируемое) время, либо по двойному «постукиванию» курсора о край. Можно также запретить переход в углах экрана (к примеру, чтобы не слишком целиться в кнопку Start).
На вкладке Global Preferences на каждом компьютере можно включить автоматическую активизацию нужного режима (главный или подчиненный) при запуске программы (по умолчанию она остается в неактивном состоянии), при необходимости отключить совместный буфер обмена и «круги на воде», включить информационное окно над системной областью панели задач, в котором будет отображаться текущее назначение ввода, а также активизировать уже упоминавшееся автопереключение режимов главный/подчиненный. Последняя опция требует, чтобы на всех отмеченных ею компьютерах были сконфигурированы оба режима (какой будет активен неважно), что потребует определенной работы. Но в целом возможность может оказаться довольно полезной.
Рис.7. Удобная функция — автоматическое переключение режимов главный/подчиненный — требует предварительной настройки всех компьютеров.Наконец, в Input Director имеется возможность записывать и выполнять клавиатурные макросы (функции мыши не поддерживается). Конечно, для этого существуют гораздо более мощные специализированные программы, но, вероятно, кому-то будет удобно иметь под рукой базовые возможности на всякий случай.
Mouse without Borders
Данная программа также предназначена для использования только в среде Windows, но зато является фактически полной противоположностью Input Director в части простоты настройки и использования. Любопытно также, что Mouse without Borders создана сотрудниками Microsoft, хотя и не является официальной продукцией. Внутри корпорации существует множество неформальных объединений программистов (не считая полновесного исследовательского подразделения), которые время от времени выдают на-гора всевозможные интересные утилиты. Так и Mouse without Borders создана буквально в гараже — только не в физическом помещении, а в сообществе The Garage. Главный ее разработчик — Труонг До, вообще-то трудится над проектом Microsoft Dynamics, такая утилита, видимо, понадобилась ему для каких-то личных целей, хотя разработчики — одна из очевидных целевых групп для различных средств управления.
Рис. 8. Инсталлируя Mouse without Borders на первом компьютере, следует ответить нет, чтобы сразу же сгенерировать код доступа. Рис. 9. Полученный код понадобится для подключения других компьютеров. Рис. 10. На каждом нужно будет указать код и имя компьютера с установленной Mouse without Borders.При инсталляции Mouse without Borders спрашивает, присутствует ли она уже на других компьютерах. Если вы устанавливаете ее впервые, нужно ответить «нет», в результате чего будет сформирован специальный код, играющий роль пароля для подключающихся компьютеров. Соответственно, на втором (и последующих) компьютере нужно ответить «да» и ввести имя первого и код. После щелчка на Link компьютеры будут связаны между собой и вся система заработает.
Рис. 11. Mouse without Borders готова к работе сразу же после установки.Mouse without Borders позволяет соединять до четырех компьютеров, порядок которых можно менять в окне настроек, просто перетягивая соответствующие изображения мышью. Мультимониторные конфигурации специальным образом никак не поддерживаются. К базовым возможностям программы относится совместное использование буфера обмена, а также возможность копирования файлов путем перетаскивания их мышью на нужный компьютер. Последнюю операцию можно выполнять только с одиночными файлами, группы и папки не поддерживаются. Процесс копирования сопровождается всплывающим оповещением, все файлы помещаются в специальную папку MouseWithoutBorders, которая автоматически создается на рабочем столе. При этом нужно иметь в виду, что никаких предупреждений при копировании файлов с одинаковыми именами не выдается, новые просто затирают старые.
Рис. 12. Настройки размещения компьютеров совсем просты, но в большинстве случаев их будет достаточно.Минималистские настройки Mouse without Borders, видимо, отражают наиболее типичное ее применение. Можно настроить «горячие» клавиши, отключить экранные заставки на управляемых компьютерах и необходимость предварительно нажимать Ctrl-Alt-Del (которая всегда обрабатывается локальной системой) для разблокирования компьютера. Имеется также возможность синхронно управлять всеми ПК, к примеру, для выполнения одних и тех же команд или программ — естественно, мышь для этих целей можно применять только в случае одинакового разрешения мониторов. Наконец, через пиктограмму Mouse without Border в системной области панели задач можно оперативно делать и передавать снимки экранов управляемых компьютеров.
Рис. 13. В Mouse without Borders изначально настроены самые необходимые «горячие» клавиши, что делает использование программы еще проще.Таким образом, Mouse without Borders действительно не слишком выходит за рамки своих основных задач, что во многих случаях даже и хорошо. В результате — самый компактный дистрибутив, простая настройка, минимум проблем.
Synergy
Главное отличие и достоинство Synergy от предыдущих участников обзора — кроссплатформенность. Программа работает в Windows, Linux и Mac OS X, можно использовать готовые бинарные файлы или скомпилировать их самостоятельно. Естественные издержки — использование кроссплатформенных библиотек (Qt) и, соответственно, достаточно громоздкий дистрибутив (порядка 11 МБ). При этом, однако, принципы настройки и использование Synergy на различных платформах могут отличаться, ввиду наличия или отсутствия GUI и некоторых других возможностей. В настоящий момент идет разработка версии 1.4, где данная проблема должна быть если не решена, то смягчена. Пока же в Linux и Mac OS X нужно быть готовым к непосредственной работе с конфигурационным файлом, впрочем, и в Windows только с его помощью можно, к примеру, описать конфигурацию компьютера с несколькими мониторами. Однако в наиболее типичных случаях настроить Synergy сравнительно легко (на примере бета-версии 1.4.5).
Рис. 14. На управляемых компьютерах достаточно только ввести имя сервера. Рис. 15. Сервер — компьютер, клавиатура и мышь которого будет использоваться для управления всей системой. В Windows его проще всего настроить интерактивно. Рис. 16. Нужно перетаскивать пиктограму монитора в ячейки и дважды щелкать на них для выполнения настройки. Рис.17. Главное — правильно указать сетевые имена компьютеров. Из полезных настроек здесь также «мертвые» углы.Synergy оперирует понятиями сервера и клиента — по сути, это аналоги главного и подчиненного компьютеров у Input Director. Соответственно, необходимо настроить сервер, клавиатуру и мышь которого предполагается использовать, и необходимое число клиентов. На клиентах достаточно указать сетевое имя сервера и нажать кнопку Start. Конфигурация сервера немного сложнее: надо выбрать интерактивный режим настройки (Configure interactively), щелкнуть на кнопке Configure server и в открывшемся окне описать размещение мониторов. Для этого нужно перетаскивать пиктограмму монитора в свободные ячейки, затем дважды щелкать на ней и в поле Screen name указывать сетевое имя соответствующего клиента. После этого система полностью готова к работе, остается лишь вернуться в главное окно Synergy и нажать кнопку Start.
Рис. 18. Synergy не блещет обилием настроек, однако позволяет выбирать различные способы переключения ввода с помощью мыши.Можно также не торопиться и сразу же настроить некоторые параметры (либо вернуться к ним после того, как более точно определятся предпочтения). К примеру, для каждого монитора можно указать «мертвые» углы, в которых не будет осуществляться переход на следующий экран. Хотя их можно определить и глобально — во вкладке Advanced Server Configuration окна Server Configuration. Здесь же корректируется сам способ перехода на другой экран с помощью мыши. По умолчанию курсор просто сразу же пересекает край экрана, но можно делать это после некоторой задержки (Switch after waiting) или по двойному «постукиванию» о край (Switch on double tap within). А вот горячие клавиши придется все настраивать самостоятельно — для этого в окне Server Configuration предназначена вкладка Hotkeys. Впрочем, в текущей бета-версии здесь явно присутствует некоторая путаница. Так, комбинацию клавиш нужно указывать дважды — и при ее инициализации, и при назначении конкретного действия.
Synergy поддерживает совместный буфер обмена, что является фактически стандартом для данного класса программ, а также располагает одной уникальной возможностью — под Windows она умеет перенаправлять команды не только от клавиатуры и мыши, но и от игрового манипулятора (gamepad).
Резюме
Существуют и другие KM-программы, к примеру, коммерческая Multiplicity. Готов предположить, что она отлажена лучше своих бесплатных аналогов; кроме того, в версии Pro заявлена возможность копирования файлов и папок. Однако даже при этом цена в $50 кажется чрезмерной.
В свою очередь, три описанные программы охватывают большинство возможных ситуаций и из них можно выбрать наиболее подходящую. Mouse without Borders подкупает своей простотой и, пожалуй, идеальна для первого знакомства. Input Director, напротив, предложит максимум настроек и дополнительных функций, вплоть до клавиатурных макросов. Synergy безальтернативна, если речь идет об операционных системах, отличных от Windows. В любом случае каждая из них способна сделать одновременную работу с несколькими компьютерами более комфортной.
На днях, после долгого перерыва, надо было поработать на WPF, и возникло желание заменить поднадоевший стандартный вид окон Windows 7 на что-нибудь более вдохновляющее, скажем в стиле Visual Studio 2012:
Переходить на Windows 8 ради этого еще не хотелось, как и добавлять в проекты ссылки на метро-подобные библиотеки и разбираться с ними — это будет следуюшим шагом. А пока было интересно потратить вечер и добиться такого результата с минимальными изменениями рабочего кода. Забегая вперед, скажу что результат, как и планировалось, получился довольно чистым: фрагмент следующего кода, если не считать нескольких аттрибутов пропущенных для наглядности, это и есть окно с первого скриншота. Все изменения ограничились заданием стиля.
Дальше я остановлюсь на ключевых моментах и подводных камнях при создания стиля окна. Демонстрационный проект доступен на github'е, если вы захотите поразбираться с исходниками самостоятельно или же просто использовать этот стиль не вдаваясь в подробности.
Основная проблема
WPF не работает с NC-area. NC, она же «Non-client area», она же «не-клиентская часть», она же хром, обрабатывается на более низком уровне. Если вам захотелось изменить какой-то из элементов окна — бордюр, иконку, заголовок или кнопку, то первый совет, который попадается при поиске — это убрать стиль окна и переделать все самому. Целиком.
За всю историю развития WPF в этом отношении мало что изменилось. К счастью, у меня были исходники из старинного поста Алекса Яхнина по стилизации под Офис 2007, которые он писал работая над демо проектом по популяризации WPF для Микрософта, так что с нуля начинать мне не грозило.
В итоге нам надо получить один стиль, и по возможности, без дополнительных контролов: в дереве проекта XAML и код стиля расположились в директории CustomizedWindow, а основное окно в корне проекта.
Мне хотелось избежать добавления новых библиотек в проект, но сохранить возможность легко перенести стиль в другое приложение, что и определило такую структуру.
Создаем стиль
Сразу же определим кнопки управления окном в стиле Студии 2012. Это будет единственный дополнительный глобальный стиль на случай если потом возникнет желание использовать такие кнопки в приложении.
Нам нужна функциональность обычной кнопки, но с очень примитивной отрисовкой — фактически только фон и содержимое.
Изображения на кнопках проще всего сделать «в векторе». Например, вот так выглядит maximize:
Для текста заголовка используем стандартный шрифт Segoe UI. Единственная особенность здесь — убедиться, что текст отрисован без размытия, иначе заголовок окна будет выглядеть… плохо он будет выглядеть — как во второй строчке на скриншоте.
Кстати, для Path'а на кнопках с той же целью использовался EdgeMode=«Aliased», а
для текста в WPF 4+ появилась долгожданная возможность указать, что отображаться он будет на дисплее, а не на «идеальном устройстве», что и позволило добиться приемлимой четкости на наших неидеальных экранах.
Еще одна интересная особенность связана с «геометрией Windows 7» при распахивании окна на весь экран. Windows жульничает, масштабируя окно так, что бордюр целиком уходит за границу экрана, оставляя на мониторе только клиентскую часть окна. Естественно, что Windows при этом больше не отрисовывает бордюр и для стандартных окон все работает как ожидалось. WPF это никак не отрабатывает и, для таких окон как у нас, есть риск потерять часть изображения или начать рисовать на соседнем мониторе, если он подключен.
Остальные детали менее существенны, но если интересно, добро пожаловать в исходники.
Оживляем окно
Помимо реакции на кнопки и иконку, окно должно перемещаться и изменять размер при drag'е за заголовок, за края и уголки. Соответствующие горячие зоны проще всего задать при помощи невидимых контролов. Пример для левого верхнего (северо-западного) угла.
При наличие атрибута Class в ресурсах, методы этого класса можно вызывать просто по имени как обычные обработчики событий, чем мы и воспользовались. Сами обработчики, например MinButtonClick и OnSizeNorthWest, выглядят примерно так:
DragSize далее вызывает WinAPI (исходник) и заставляет Windows перейти в режим измененения размера окна как в до-дотнетовские времена.
В 4.5 появились удобные классы SystemCommands и WindowChrome. При добавлении к окну, WindowChrome берет на себя функции изменения размера, положения и состояния окна, оставляя нам более «глобальные» проблемы.
Почти готово. Зададим триггеры для контроля изменений интерфейса при изменении состояния окна. Вернемся в XAML и, например, заставим StatusBar'ы изменять цвет в зависимости от значения Window.IsActive.
Обратите внимание, что этот стиль влияет не на темплэйт окна, а на контролы помещенные в наше окно. Помните самый первый фрагмент с пользовательским кодом?
Собираем все вместе
Все. Нам осталось только подключить стиль к проекту через ресурсы приложения:
И можно использовать его в любом окне.
Небольшая утилита для максимизации игры в окне до состояния "без рамки".
Есть игры, которые поддерживают только два состояния "полный экран и "окно".
Чудесно работает в играх серии "Batman", "Tomb Raider 2013" и др.
Проста в настройке и использовании.
Выбираете ехе игры и оставляете утилиту в трее. Программа сама максимизирует окно.
Borderless Gaming 6.5
А самый гладкий фреймрейт, без скачков, можно добиться таким способом. И тройная буферизация работает по умолчанию.
billypit А если я не включил в настройках игры "Вертикальная синхронизация", то будет ли работать тройная буферизация работает по умолчанию?
LiaraTsoni Работа тройного или двойного буфера кадров подразумевает наличие синхронизации. Хоть через драйвер, хоть в игре. Без синхронизации буферизации не будет. Тоже касается и пререндеред фреймс. Прошу обратить внимание, что современные игры х64 не позволяют форсировать тройную буферизацию сторонними приложениями. Одноименная опция драйвера нвидии работает только с openGL.
Элемент Border — это элемент-декоратор, который можно использовать для рисования границы, фона или всего сразу вокруг другого элемента. Поскольку WPF панели не поддерживают рисование рамок вокруг своих границ, элемент Border может помочь вам сделать это, просто помещая панель внутрь элемента Border.
Далее приведен простой пример использования Border
Border абсолютно невидим, пока вы не определите кисть фона или границы и толщину линии, как и было сделано в примере, с использованием Background, BorderBrush и BorderThickness .
Border с закругленными углами
Одной из замечательных особенностей Border является то, что можно очень легко сделать закругленные углы. Посмотрите на следующий пример, в котором в котором углы закругляются после внесения небольших изменений:
Все что я сделал, это добавил свойство CornerRadius. Для него можно указать одно значение, которое будет использоваться для всех углов, или как показано в примере, отдельные значения для верхних правого и левого и нижнего правого и левого.
Цвет и толщина границы
Граница в примере выше слабо заметная, но это можно легко изменить настройкой цвета и толщины. Поскольку свойство BorderThickness имеет тип Thickness, вы можете задать разную толщину для каждой стороны или задать одно значения для левой и правой и одно для верхней и нижней границы.
Фон Border
Свойство Background типа Brush открывает много замечательных возможностей. Как видно из начального примера, очень легко использовать сплошной фон, но вы также можете использовать градиент, и это не сложно:
В этом примере я указал, что в качестве фона Border должна использоваться кисть LinearGradientBrush, а так же выбрал более подходящий цвет границы. Синтаксис определения кисти LinearGradientBrush может показаться не слишком очевидным, так что я дам пояснения этой и других видов кистей в последующих главах, но на данный момент, вы можете попробовать изменить некоторые значения в моем примере и посмотреть результат.
Читайте также: