使用C#调整屏幕亮度

如何在C#中调整屏幕亮度?

谢谢。

查看SetDeviceGammaRamp API函数。 有一篇CodeProject文章描述了在C#中使用它: 在C#中设置屏幕亮度

请注意,您的显卡必须支持这一点,我认为大多数现代显卡都支持,但我不知道。

编辑:由于CodeProject文章似乎已关闭,另一个知道如何从C#调用它的地方是在pInvoke网站上 。

刚刚在MSDN上找到了SetMonitorBrightness函数。

这会调整屏幕的真实亮度,但不会在任何地方支持:

http://www.codeproject.com/Articles/236898/Screen-Brightness-Control-for-Laptops-and-Tablets

实际上你可以使用SetDeviceGammaRamp()在C#中设置屏幕亮度。

创建一个新的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