Введение
Данный инструмент помогает корректировать яркость дисплея для Вашего C# приложения. Он поддерживается всеми мониторами и видеокартами.
Выбираем основу
Мы будем использовать функцию SetDeviceGammaRamp, она подходит к различным мониторам. Вы могли слышать про WMIBrightness, но, к сожалению, не все видеокарты поддерживают эту функцию.
Пишем код
В данном методе требуется использования двух форм. Одна будет содержать элементы управления и список функций, а другая будет открываться “fullscreen” и будет полностью прозрачной.
this.TopMost = true;
this.Opacity = 0.5D;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
Для прозрачной формы используем функцию WndProc, для того чтобы все WM_NCHITTEST сообщения проходили через нее.
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0084) // WM_NCHITTEST
m.Result = (IntPtr)(-1); // HTTRANSPARENT
else
base.WndProc(ref m);
}
В форму, содержащую в себе элементы управления и функции, добавим функцию регулировки и обновления яркости. Она выполняется при загрузке формы или при изменении позиции слайдера.
void UpdateBrightness()
{
float f = trackBarBrightness.Value * 0.01f;
if (f < 0.5f)
{
program.screenForm.Opacity = 1 - 2 * f;
program.screenForm.BackColor = Color.Black;
}
else
{
program.screenForm.Opacity = 2 * (f - 0.5f);
program.screenForm.BackColor = Color.White;
}
}
Видео курсы по схожей тематике:
Когда форма закрыта, основная программа должна быть закрыта с помощью потокового выхода, иначе яркость будет оставаться, и Вы не сможете закрыть приложение.
private void ControlForm_FormClosed_1(object sender, FormClosedEventArgs e)
{
program.ExitThread();
}
Теперь в программе мы получили функциональную модель изменения яркости экрана с помощью позиции слайдера.
Бесплатные вебинары по схожей тематике:
Если Вы хотите попробовать сделать вышеописанное у себя, то скачайте Visual Studio 2013.
Источник: http://www.codeproject.com/Tips/855454/How-To-Change-Screen-Brightness-in-Csharp
Статьи по схожей тематике