UDF > WinAPIEx > GDI > Colors >


_WinAPI_GetDeviceGammaRamp

Obtient la rampe de gamma sur les cartes vid�o de couleurs directes qui supportent les rampes de gamma t�l�chargeables dans le mat�riel

#include <WinAPIGdi.au3>
_WinAPI_GetDeviceGammaRamp ( $hDC, ByRef $aRamp )

Param�tres

$hDC Handle du contexte de p�riph�rique de la carte vid�o des couleurs directes en question.
$aRamp Retourne un tableau 2D ([r1, g1, b1], [r2, g2, b2],..., [r256, g256, b256]) qui est cr�� par cette fonction, et o� la fonction place la rampe de gamma courante de la carte vid�o des couleurs.
Chaque �l�ment de ce tableau est une valeur enti�re dans la plage de 0 � 65535 qui est une correspondance entre les valeurs RGB dans la m�moire tampon de trame et les valeurs DAC (digital-analog-converter).
(Voir MSDN pour plus d'informations)

Valeur de retour

Succ�s: Retourne 1.
�chec: Retourne 0.

Remarque

Les modes d'affichage de couleur directe n'utilisent pas les tables de correspondances de couleurs et sont g�n�ralement 16, 24 ou 32 bits.
Toutes les cartes vid�o de couleur directe ne prennent pas en charge les rampes de gamma chargeables.
La fonction _WinAPI_GetDeviceGammaRamp() r�ussit uniquement pour les p�riph�riques avec des pilotes qui supportent les rampes de gamma t�l�chargeables dans le mat�riel.

Voir aussi

Consultez GetDeviceGammaRamp dans la librairie MSDN.

Exemple

#include <APIGdiConstants.au3>
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <SendMessage.au3>
#include <StaticConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>

Local $aRamp, $iRgb = 0xFF0000

; Cr�e une GUI
Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 256, 256)
GUICtrlCreatePic('', 0, 0, 256, 256)
Local $hPic = GUICtrlGetHandle(-1)

; Obtient la rampe gamma actuelle et cr�e un graphique de table de correspondance (LUT)
Local $hDC = _WinAPI_GetDC(0)
Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
Local $hBitmap = _WinAPI_CreateCompatibleBitmapEx($hDC, 256, 256, 0)
Local $hSv1 = _WinAPI_SelectObject($hMemDC, $hBitmap)
Local $hPen = _WinAPI_GetStockObject($DC_PEN)
Local $hSv2 = _WinAPI_SelectObject($hMemDC, $hPen)
_WinAPI_SetROP2($hMemDC, $R2_XORPEN)
_WinAPI_GetDeviceGammaRamp($hDC, $aRamp)
_WinAPI_ReleaseDC(0, $hDC)
If IsArray($aRamp) Then
    For $i = 0 To 2
        _WinAPI_SetDCPenColor($hMemDC, BitShift($iRgb, 8 * $i))
        For $j = 0 To 255
            If $j Then
                _WinAPI_LineTo($hMemDC, $j + 1, Round(255 * (1 - $aRamp[$j][$i] / 65280)) - 1)
            Else
                _WinAPI_MoveTo($hMemDC, 0, Round(255 * (1 - $aRamp[$j][$i] / 65280)))
            EndIf
        Next
    Next
EndIf
_WinAPI_SetDCPenColor($hMemDC, 0x404040)
_WinAPI_SetROP2($hMemDC, $R2_MERGEPEN)
For $i = 64 To 192 Step 64
    _WinAPI_DrawLine($hMemDC, $i - 1, 0, $i - 1, 256)
    _WinAPI_DrawLine($hMemDC, 0, $i, 256, $i)
Next
_WinAPI_SelectObject($hMemDC, $hSv1)
_WinAPI_SelectObject($hMemDC, $hSv2)
_WinAPI_DeleteObject($hPen)
_WinAPI_DeleteDC($hMemDC)

; D�finit le bitmap du contr�le Picture
_SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap)
Local $hObj = _SendMessage($hPic, $STM_GETIMAGE)
If $hObj <> $hBitmap Then
    _WinAPI_DeleteObject($hBitmap)
EndIf

GUISetState(@SW_SHOW)

If IsArray($aRamp) Then
    _ArrayDisplay($aRamp, '_WinAPI_GetDeviceGammaRamp')
Else
    MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Error', 'Votre carte vid�eo ne supporte pas les rampes de gamma chargeable.', 0, $hForm)
EndIf

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE