添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
最好简单些的要windows窗体的傻瓜似的操作简单的最好有源代码或你编程完用邮箱或网盘发给我... 最好简单些的 要windows窗体的 傻瓜似的操作简单的 最好有源代码或你编程完用邮箱或网盘发给我 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;//必须引用此项//警告:实验此代码可能给你的显示器的显示带来问题 ,花了两个小时查API的用法
// 不过我试过是没有事情的(BS下自己:不是用自己的机子)namespace WindowsApplication1
...{
public partial class Form1 : Form
...{ public Form1()
...{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
...{
SetGamma(trackBar1.Value);
}
[DllImport("gdi32.dll")]
public static extern int GetDeviceGammaRamp(IntPtr hDC, ref RAMP lpRamp);
RAMP ramp = new RAMP(); [DllImport("gdi32.dll")]
public static extern int SetDeviceGammaRamp(IntPtr hDC, ref RAMP lpRamp); [DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hWnd); [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;
}
void SetGamma(int gamma)
...{
ramp.Red = new ushort[256];
ramp.Green = new ushort[256];
ramp.Blue = new ushort[256]; for (int i = 1; i < 256; i++)
...{
// gamma 必须在3和44之间
ramp.Red[i] = ramp.Green[i] = ramp.Blue[i] = (ushort)(Math.Min(65535, Math.Max(0, Math.Pow((i + 1) / 256.0, gamma * 0.1) * 65535 + 0.5)));
}
SetDeviceGammaRamp(GetDC(IntPtr.Zero), ref ramp);
} }
}