Подтвердить что ты не робот

Отрегулируйте яркость экрана с помощью С#

Как настроить яркость экрана на С#?

Спасибо.

4b9b3361

Ответ 1

Посмотрите на функцию API SetDeviceGammaRamp. Здесь есть статья CodeProject, в которой описывается ее использование с С# здесь: Настройка яркости экрана на С#

Имейте в виду, что ваша видеокарта должна поддерживать это, хотя я бы предположил, что это делают большинство современных, но я не знаю.

Изменить. Поскольку статья CodeProject кажется недоступной, другое место, чтобы узнать, как вызвать ее из С#, находится на pInvoke site.

Ответ 2

Только что нашел SetMonitorBrightness функцию MSDN.

Ответ 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