#include #include Global $nFrames = 60 Global $nFPS = 30 If $nFrames < $nFPS Then $nFrames = $nFPS Global $aBitmaps[$nFrames][4] For $i = 0 To $nFrames-1 $aBitmaps[$i][2] = _WinAPI_CreateCompatibleDC(0) $tBMI = DllStructCreate($tagBITMAPINFO) DllStructSetData($tBMI, 1, DllStructGetSize($tBMI) - 4) DllStructSetData($tBMI, 2, 400) DllStructSetData($tBMI, 3, 400) DllStructSetData($tBMI, 4, 1) DllStructSetData($tBMI, 5, 32) $aDIB = DllCall('gdi32.dll', 'ptr', 'CreateDIBSection', 'hwnd', 0, 'ptr', DllStructGetPtr($tBMI), 'uint', 0, 'ptr*', 0, 'ptr', 0, 'uint', 0) $aBitmaps[$i][1] = $aDIB[0] $aBitmaps[$i][0] = $aDIB[4] _WinAPI_SelectObject($aBitmaps[$i][2], $aBitmaps[$i][1]) $aBitmaps[$i][3] = DllStructCreate("dword[160000]", $aBitmaps[$i][0]) Next Global $fPi = 4 * ATan(1) $hGUI = GUICreate("Animated Landscape") $hDC = _WinAPI_GetDC($hGUI) $hStatusLabel = GUICtrlCreateLabel("0/" & $nFrames, 0, 400/2-7, 400, 14, 1) $hProgressLabel = GUICtrlCreateLabel("", 50, 400/2+15, 1, 2) GUICtrlSetBkColor(-1, 0x00FF00) $hStepLabel = GUICtrlCreateLabel("", 50, 400/2+20, 1, 2) GUICtrlSetBkColor(-1, 0x00FF00) GUISetState() For $iFrame = 1 To $nFrames $SunX = -14+((39/($nFrames-1))*($iFrame-1)) $SunY = -(27/380)*$SunX^2+(297/380)*$SunX+(945/38) $fAmbientLight = ($SunY/27) $iFrameTimer = TimerInit() For $fy = 0 To 400 $y = -15 + $fy * 0.125 For $fx = 0 To 400 $x = -20 + $fx * 0.125 $fDirectionalLight = Int((Abs($SunX-($x+6))/39)*60) $iColorARGB = RGB(0,200,200) If $y>Sin($x) And $y>Cos($x) And $y -3 WEnd Func RGB($R, $G, $B) If $R <= 0 Then $R = 0 If $G <= 0 Then $G = 0 If $B <= 0 Then $B = 0 Return '0x00' & Hex($R,2) & Hex($G,2) & Hex($B,2) EndFunc Func DrawScene() $iFrame += $iAnimator If $iFrame = $nFrames-1 Or $iFrame = 0 Then $iAnimator *= -1 _WinAPI_BitBlt($hDC, 0, 0, 400, 400, $aBitmaps[$iFrame][2], 0, 0, $srccopy) EndFunc