如圖,最近在做一個工程,接觸到了要調節亮度,在網上看到了用調節伽馬的方法,但我用了過后螢屏出現問題,如果有誰知道的請告訴我怎么做,謝謝!
uj5u.com熱心網友回復:
微軟自身的有控制螢屏亮度的API,確實是呼叫SetDeviceGammaRamp()這個函式。這里有個很詳細的圖文教程你可看看:http://bit.ly/2EkTArr新建一個表單應用,拖一個滑條和一個按鈕。代碼發給你你可以試試:
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);
}
}
}
你把滑條的值改一改試試看
uj5u.com熱心網友回復:
也碰到同樣的問題 markuj5u.com熱心網友回復:
lz不結貼感覺好不厚道uj5u.com熱心網友回復:
這個只是調節對比度或者螢屏顏色,壓根不是調亮度,用過,不好用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/159888.html
標籤:C#
上一篇:VB.net有函式陣列嗎?
下一篇:多叉樹如何非遞回非堆疊遍歷
