Отрегулируйте яркость экрана с помощью С#
Как настроить яркость экрана на С#?
Спасибо.
Ответы
Ответ 1
Посмотрите на функцию API SetDeviceGammaRamp. Здесь есть статья CodeProject, в которой описывается ее использование с С# здесь: Настройка яркости экрана на С#
Имейте в виду, что ваша видеокарта должна поддерживать это, хотя я бы предположил, что это делают большинство современных, но я не знаю.
Изменить. Поскольку статья CodeProject кажется недоступной, другое место, чтобы узнать, как вызвать ее из С#, находится на pInvoke site.
Ответ 2
Только что нашел SetMonitorBrightness
функцию MSDN.
Ответ 3
Это позволяет отрегулировать реальную яркость экрана, но не поддерживается везде:
http://www.codeproject.com/Articles/236898/Screen-Brightness-Control-for-Laptops-and-Tablets
Ответ 4
На самом деле вы можете использовать SetDeviceGammaRamp()
для установки яркости экрана на С#.
Создайте новое приложение для форм Windows и скопируйте следующий код. Просто перетащите трек-панель и кнопку в окна.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace brightnesscontrol
{
public partial class Form1 : Form
{
[DllImport("gdi32.dll")]
private unsafe static extern bool SetDeviceGammaRamp(Int32 hdc, void* ramp);
private static bool initialized = false;
private static Int32 hdc;
private static int a;
public Form1()
{
InitializeComponent();
}
private static void InitializeClass()
{
if (initialized)
return;
hdc = Graphics.FromHwnd(IntPtr.Zero).GetHdc().ToInt32();
initialized = true;
}
public static unsafe bool SetBrightness(int brightness)
{
InitializeClass();
if (brightness > 255)
brightness = 255;
if (brightness < 0)
brightness = 0;
short* gArray = stackalloc short[3 * 256];
short* idx = gArray;
for (int j = 0; j < 3; j++)
{
for (int i = 0; i < 256; i++)
{
int arrayVal = i * (brightness + 128);
if (arrayVal > 65535)
arrayVal = 65535;
*idx = (short)arrayVal;
idx++;
}
}
bool retVal = SetDeviceGammaRamp(hdc, gArray);
return retVal;
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
a = trackBar1.Value;
SetBrightness(a);
}
}
}
Возможно, вам нужно изменить максимальное и минимальное значение трек-панели.
Вы можете ознакомиться с учебником здесь. Больше фотографий и деталей: http://www.lattepanda.com/topic-f11t3020.html?sid=f9dc5d65cd4f2feb3c91ca41196c087e