Aero Shake в C#

Обнаружение дрожания формы

Реализация в Windows 7 новой функции Aero Shake в C# — это чистая функция для Windows Forms. Комбинация методов программирования .NET позволит Windows Forms обнаружить, когда происходит дрожание.

Обратите внимание, что исходный код будет аналогичен реализации функции Snap Window 7 в C#.

Показатели формы

Обнаружение, когда форма Windows Forms дрожит, состоит в измерении некоторых свойств. Если значения попадают в определенный диапазон, то можно предположить, что окно вздрагивало. Такой подход также предоставляет разработчикам гибкость для настройки чувствительности дрожания окна.

Прежде чем мы сможем что-либо обнаружить, приложение C# должно знать, когда пользователь нажимает строку заголовка и когда отпускает. Это легко выполнить путем переопределения WndProc вместо работы с событиями .NET. С другой стороны, отслеживать время изменения расположения формы лучше с помощью событий .NET. Это комбинация двух методов программирования.

Первая метрика, которую следует найти, это "скорость" дрожания. Для этого сохраняется время, когда пользователь начинает дрожание окна и заканчивает дрожание формы. Короткий отрезок времени означает, что дрожание быстро закончилось.

Вторая метрика — это насколько сильно дрожало окно. Используемый прием состоит в сохранении координат формы Windows Forms в списке во время дрожания. После завершения действия свойство списка Count .NET дает представление о том, насколько сильно окно изменяло координаты. Длинный список означает, что окно хорошо дрожало, если можно так сказать.

Последняя метрика, которую мы будем проверять, это смещение формы. Это делается путем взятия средней из всех точек, сохраненных в списке C#, и нахождением разницы между ее координатами X и Y и текущим положением окна. Полученная в результате точка дает представление о том, насколько переместилась форма после всех движений. Это предотвращает обнаружение дрожания во время обычного перетаскивания окна.

Свертывание и развертывание окон

Поскольку мы можем обнаружить, когда форма C# дрожала, остается только выполнить действие. В случае Aero Shake нам требуется, чтобы все остальные окна сворачивались или разворачивались в зависимости от того, является дрожание первым или вторым.

В демонстрационное приложение включен исходный код сворачивания и разворачивания. Объяснение этого кода C# можно будет найти в будущей статье.

Демонстрационное приложение

Демонстрационное приложение на C# является примером реализации функции Aero Shake в C#.