Remplit avec un dégradé radial
#include <WinAPIGdi.au3>
_WinAPI_RadialGradientFill ( $hDC, $iX, $iY, $iRadius, $iRGB1, $iRGB2 [, $fAngleStart = 0 [, $fAngleEnd = 360 [, $fStep = 5]]] )
| $hDC | Handle du contexte de périphérique. |
| $iX | La coordonnée x du point central, en unités logiques. |
| $iY | La coordonnée y du point central, en unités logiques. |
| $iRadius | Le rayon du cercle de remplissage du dégradé. |
| $iRGB1 | La couleur au point central. |
| $iRGB2 | La couleur sur le bord du cercle. |
| $fAngleStart | [optionnel] L'angle à partir duquel il faut commencer le remplissage, en degrés. Par défaut, 0°. |
| $fAngleEnd | [optionnel] L'angle auquel il faut terminer le remplissage, en degrés. Par défaut, 360°. |
| $fStep | [optionnel] Le pas de remplissage du dégradé, en degrés. Pour la plus grande valeur de ce paramètre, le dégradé sera le meilleur, mais le traitement prendra plus de temps, et vice versa. Par défaut, 5. |
| Succès: | Retourne 1. |
| Échec: | Retourne 0. |
Cette fonction ne remplit pas en dégradé avec la transparence, et n'utilise pas l'anticrénelage.
#include <GUIConstantsEx.au3> #include <SendMessage.au3> #include <StaticConstants.au3> #include <WinAPIGdi.au3> #include <WinAPIGdiDC.au3> #include <WinAPIHObj.au3> ; Crée une GUI Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 400, 400) Local $idPic = GUICtrlCreatePic('', 0, 0, 400, 400) Local $hPic = GUICtrlGetHandle($idPic) ; Crée un dégradé Local $hDC = _WinAPI_GetDC($hPic) Local $hDestDC = _WinAPI_CreateCompatibleDC($hDC) Local $hBitmap = _WinAPI_CreateCompatibleBitmapEx($hDC, 400, 400, 0xFFFFFF) Local $hDestSv = _WinAPI_SelectObject($hDestDC, $hBitmap) For $i = 0 To 315 Step 45 _WinAPI_RadialGradientFill($hDestDC, 200, 200, 180, Random(0, 0xFFFFFF, 1), 0xFFFFFF, $i, $i + 45) Next _WinAPI_ReleaseDC($hPic, $hDC) _WinAPI_SelectObject($hDestDC, $hDestSv) _WinAPI_DeleteDC($hDestDC) ; Définit le dégradé dans le 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) Do Until GUIGetMsg() = $GUI_EVENT_CLOSE