Gå til innhold

Lysstyrke til skjerm regulering


Anbefalte innlegg

Heisann!

 

Jeg har bygget inn en 8" lcd skjerm i dashbordet til bilen jeg har.

 

Pga det er ikke hurtigtastene på lcd skjermen for lysstyrke (Brightness) regulering tilgjengelig.

 

Ved kjøring i mørke er jeg dog avh. av å kunne dimme ned lysstyrken på skjermen.

 

Har søkt på nettet etter en kode som lar meg justere lysstyrke (gamma?) i et VB program. Er jo endel programmer der ute som gjør akkurat dette ( nvidia quicktweak) men jeg ønsker å gjøre dette raskt og enkelt ved bruk av to command buttons.

 

Noen som vet om noe brukenes kode ? :)

 

 

mvh

Lenke til kommentar
Videoannonse
Annonse

Vel, jeg skulle tro SetDeviceGammaRamp skulle klare dette. Legg en scrollbar inn i formen og sett Max til 100. Kall den for scrollBrightness og legg følgende kode inn i formen:

 

Private Declare Function GetDeviceGammaRamp Lib "gdi32" (ByVal hdc As Long, lpv As Any) As Long
Private Declare Function SetDeviceGammaRamp Lib "gdi32" (ByVal hdc As Long, lpv As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private OrigRamp(0 To 255, 0 To 2) As Integer
Private CurrRamp(0 To 255, 0 To 2) As Integer

Public Sub ChangeBrightness(destArray() As Integer, refArray() As Integer, lngFactor As Double)

   Dim Tell As Long, Temp As Long
   
   For Tell = 0 To 255
       destArray(Tell, 0) = Lng2Int(Int2Lng(refArray(Tell, 0)) * lngFactor)
       destArray(Tell, 1) = Lng2Int(Int2Lng(refArray(Tell, 1)) * lngFactor)
       destArray(Tell, 2) = Lng2Int(Int2Lng(refArray(Tell, 2)) * lngFactor)
   Next

End Sub

Private Sub Form_Load()

   ' Hent den originale lysstyrken
   GetDeviceGammaRamp Me.hdc, OrigRamp(0, 0)

   ' I førstingen er alltid lysstyrken på det normale
   scrollBrightness.Value = scrollBrightness.Max

End Sub

Private Sub Form_Unload(Cancel As Integer)

   ' Tilbakestill lysstyrke
   SetDeviceGammaRamp Me.hdc, OrigRamp(0, 0)

End Sub

Public Function Int2Lng(IntVal As Integer) As Long

   CopyMemory Int2Lng, IntVal, 2

End Function

Public Function Lng2Int(Value As Long) As Integer

   CopyMemory Lng2Int, Value, 2
  
End Function

Private Sub scrollBrightness_Change()

   ChangeBrightness CurrRamp, OrigRamp, 0.5 + ((scrollBrightness.Value / scrollBrightness.Max) / 2)

   ' Sett den nye lysstyrken
   SetDeviceGammaRamp Me.hdc, CurrRamp(0, 0)

End Sub

Private Sub scrollBrightness_Scroll()

   ' Endre lysstyrken
   scrollBrightness_Change

End Sub

Lenke til kommentar

Jeg antar problemet ligger i følgende:

 

Direct color display modes do not use color lookup tables and are usually 16, 24, or 32 bit. Not all direct color video boards support loadable gamma ramps. SetDeviceGammaRamp succeeds only for devices with drivers that support downloadable gamma ramps in hardware.

 

Hardwaren din støtter med andre ord ikke denne funksjonen.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...