有什么方法可以在c#中获得系统的当前亮度

时间:2017-11-08 07:20:06

标签: c#

有没有办法使用c#程序获取系统的当前亮度。 我想用c#程序调整系统亮度。 我尝试了很多方法,但它们只是用于设置系统亮度和使用预定义值,但我想获得当前亮度并相应调整。 我正在使用的代码但没有得到所需的结果。

using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace BrightnessApp
{
public partial class Form1 : Form
{
private int _gammaValue;
private RAMP _ramp;
public Form1()
{
InitializeComponent();
}
public Form1(IContainer container)
{
container.Add(this);
InitializeComponent();
}
[Description("Brightness Gamma Value")]
[Category("Brightness")]
public int SetGammaValue
{
get { return _gammaValue; }
set { _gammaValue = value; }
}
private void Form1_Load(object sender, EventArgs e)
{ 
}
[DllImport("gdi32.dll")]
public static extern bool SetDeviceGammaRamp(IntPtr hDC, ref RAMP lpRamp);
[DllImport("user32.dll")]
private static extern IntPtr GetDC(IntPtr hWnd);
public void ApplyGamma()
{
double gValue = _gammaValue;
gValue = Math.Floor(Convert.ToDouble((gValue / 2.27)));
_gammaValue = Convert.ToInt16(gValue);
if (_gammaValue != 0)
{
_ramp.Red = new ushort[256];
_ramp.Green = new ushort[256];
_ramp.Blue = new ushort[256];
for (int i = 1; i < 256; i++)
{
_ramp.Red[i] = _ramp.Green[i] = _ramp.Blue[i] = (ushort)(Math.Min(65535, Math.Max(0, Math.Pow((i + 1) / 256.0, (_gammaValue + 5) * 0.1) * 65535 + 0.5)));
}
SetDeviceGammaRamp(GetDC(IntPtr.Zero), ref _ramp);
}
}
#region Nested type: RAMP
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct RAMP
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public UInt16[] Red;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public UInt16[] Green;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public UInt16[] Blue;
}
#endregion
private void button1_Click(object sender, EventArgs e)
{
_gammaValue += 10;
ApplyGamma();
}
private void button2_Click(object sender, EventArgs e)
{
_gammaValue--;
ApplyGamma();
}
}
}

如果你有更好的方法,请现在就告诉我。感谢:)

1 个答案:

答案 0 :(得分:0)

Gamma和Brightness是微妙不同的东西,Gamma实际上更像是对比度而不是亮度。对于显示器亮度,您可能需要查看https://msdn.microsoft.com/en-us/library/windows/desktop/dd692972%28v=vs.85%29.aspx