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 )
$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) |
Succ�s: | Retourne 1. |
�chec: | Retourne 0. |
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.
Consultez GetDeviceGammaRamp dans la librairie MSDN.
#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