Hướng dẫn - Tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10 | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We don't have any banner, Flash, animation, obnoxious sound, or popup ad. We do not implement these annoying types of ads!

We need money to operate the site, and almost all of it comes from our online advertising.

Please add https://vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

Hướng dẫn Tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10

Hacker Is Real

Hãy like thay vì post thanks ❤❤❤!
Chắc các bạn cũng không còn xa lạ gì với những góc máy sang chảnh luôn để màn hình Desktop là một cái đồng hồ đếm giờ làm trang trí. Dù giao diện cực kỳ đơn giản với nền đen chữ trắng nhưng nó cũng đủ làm nổi bật góc máy và khiến không ít bạn đổ xô đi hỏi cách làm tương tự.
Bước 1: Đầu tiên các bạn cần tải Fliqlo Flip Clock tại đây. Đây là một ứng dụng nhẹ và miễn phí nên các bạn cứ an tâm sử dụng nhé.
Bước 2: Sau khi tải về thì bạn nhấn đúp vào file 314-Fliqlo Setup.exe để chạy ứng dụng.
Hướng dẫn tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10

Bước 3: Trên màn hình xuất hiện một cửa sổ mới, tại đây các bạn bấm Settings để tùy chỉnh giao diện đồng hồ theo ý mình thích.
Hướng dẫn tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10 - 1

Bước 4: Một cửa sổ mới sẽ xuất hiện. Mặc định đồng hồ sẽ đếm giờ theo 12 giờ, nếu bạn muốn đổi thành 24 giờ thì chọn vào ô 24H Format.
Hướng dẫn tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10 - 2

Sau đó bạn điều chỉnh kích cỡ chữ của đồng hồ ở thanh ngang Size.
Hướng dẫn tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10 - 3

Nếu bạn muốn đưa cài đặt về ban đầu thì chọn Reset All.
Hướng dẫn tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10 - 4

Ngoài ra, bạn còn có thể thiết lập sau bao nhiêu thời gian thì Windows sẽ hiển thị màn hình chờ này ở mục Wait.
Hướng dẫn tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10 - 5

Tùy chỉnh xong thì bạn bấm Apply rồi chọn OK.
Nếu bạn không muốn sử dụng giao diện đồng hồ này nữa thì bạn bấm thanh menu ở mục Screen saver và chọn None.
Hướng dẫn tạo đồng hồ đếm giờ siêu ngầu cho hình nền chờ trên Windows 10 - 6

Trích docbao.vn
 

malemkhoang

Rìu Chiến
Tặng bạn 1 cái nè.

Mã:
;Nhấn lên đồng hồ, Esc để thoát;
;Nhấn và giữ trên đồng hồ, kéo để thay đổi vị trí'
;Đặt con trỏ lên đồng hồ, cuộn để thay đổi kích thước;
;Nguồn: MattyD (AutoIT)
#AutoIt3Wrapper_Au3Check_Parameters = -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
#NoTrayIcon
#include <GDIPlus.au3>
#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Opt("MustDeclareVars", 1)

Global $hGUI, $iWinH, $iWinW, $iChSize, _
        $iStartSz, $iMargin, $iCanvasSz, $iWinXStartPos
Global Const $PI = 4 * ATan(1)
Global Const $MAGIC_PINK = 0xFF00FF, $MAGIC_PINK_ARGB = 0xFFFF00FF

$iWinH = @DesktopHeight
$iWinW = $iWinH
$iCanvasSz = $iWinH

$iMargin = 4
$iStartSz = Int($iWinH / 4) - (2 * $iMargin)
$iWinXStartPos = 0 ;Right Side: ide@DesktopWidth - ($iStartSz + (2 * $iMargin))

$hGUI = GUICreate("Clock", $iWinW, $iWinH, $iWinXStartPos, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
GUISetBkColor($MAGIC_PINK)
_WinAPI_SetLayeredWindowAttributes($hGUI, $MAGIC_PINK, 0xF0)
GUISetState(@SW_SHOW)

GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL")
GUIRegisterMsg($WM_NCMBUTTONDOWN, "WM_NCMBUTTONDOWN")

Clock()

Func Clock()

    Local $hGraphic, $hClockBitmap, $hClockGraphic
    Local $iSize, $iDigSize, $iOrigin
    Local $iNumDist, $iDigXOffset, $iDigYOffset
    Local $ixOffset, $iyOffset
    Local $hFrameBrush, $hNoseBrush, $hHighlightBrush, $hFaceBrush
    Local $hBlackPen, $hSecPen, $hMinPen, $hHourPen
    Local $iSec, $iMin, $iHour
    Local $ixSecOffset, $iySecOffset, $ixMinOffset, $iyMinOffset, _
            $ixHourOffset, $iyHourOffset

    $iDigSize = $iSize / 20
    $iChSize = $iStartSz

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

    $hClockBitmap = _GDIPlus_BitmapCreateFromGraphics($iCanvasSz, $iCanvasSz, $hGraphic)
    $hClockGraphic = _GDIPlus_ImageGetGraphicsContext($hClockBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hClockGraphic, 4)

    $hFrameBrush = _GDIPlus_BrushCreateSolid(0xFF80BBCC)
    $hNoseBrush = _GDIPlus_BrushCreateSolid(0xEE778888)
    $hHighlightBrush = _GDIPlus_BrushCreateSolid(0x44FF00FF)
    $hFaceBrush = _GDIPlus_BrushCreateSolid(0xFFEEF0FF)

    $hSecPen = _GDIPlus_PenCreate(0xBB882255, 1)
    $hMinPen = _GDIPlus_PenCreate(0xBBFF8833, 4)
    $hHourPen = _GDIPlus_PenCreate(0xEE4488AA, 5)
    $hBlackPen = _GDIPlus_PenCreate(0xFF000000, 4)

    Do
        If $iSize <> $iChSize Or @SEC <> $iSec Then
            $iSize = $iChSize
            $iDigSize = $iSize / 20
            $iOrigin = Int($iSize / 2) + $iMargin

            $iNumDist = $iSize / 2 - ($iSize / 8)
            $iDigXOffset = .55 * $iDigSize
            $iDigYOffset = -(.7 * $iDigSize)

            _GDIPlus_GraphicsClear($hClockGraphic, $MAGIC_PINK_ARGB)

            _GDIPlus_GraphicsFillEllipse($hClockGraphic, $iMargin, $iMargin, $iSize, $iSize, $hFrameBrush)
            _GDIPlus_GraphicsFillEllipse($hClockGraphic, $iMargin + 8, $iMargin + 8, $iSize - 8, $iSize - 8, $hHighlightBrush)
            _GDIPlus_GraphicsFillEllipse($hClockGraphic, $iMargin + 8, $iMargin + 8, $iSize - 16, $iSize - 16, $hFaceBrush)
            _GDIPlus_GraphicsDrawEllipse($hClockGraphic, $iMargin, $iMargin, $iSize, $iSize, $hBlackPen)

            For $i = 1 To 12
                $ixOffset = Int($iNumDist * Sin($i * ($PI / 6)))
                $iyOffset = Int($iNumDist * Cos($i * ($PI / 6)))
                $ixOffset -= (StringLen($i) * $iDigXOffset)
                $iyOffset -= $iDigYOffset

                _GDIPlus_GraphicsDrawString($hClockGraphic, $i, ($iOrigin + $ixOffset), ($iOrigin - $iyOffset), "Symbol", $iDigSize)
            Next

            $iSec = @SEC
            $iMin = 60 * @MIN + $iSec
            $iHour = (3600 * @HOUR) + $iMin

            $ixSecOffset = Int((0.83 * $iNumDist) * Sin($iSec * ($PI / 30)))
            $iySecOffset = Int((0.83 * $iNumDist) * Cos($iSec * ($PI / 30)))

            $ixMinOffset = Int((0.85 * $iNumDist) * Sin($iMin * ($PI / 1800)))
            $iyMinOffset = Int((0.85 * $iNumDist) * Cos($iMin * ($PI / 1800)))

            $ixHourOffset = Int((0.65 * $iNumDist) * Sin($iHour * ($PI / 21600)))
            $iyHourOffset = Int((0.65 * $iNumDist) * Cos($iHour * ($PI / 21600)))

            _GDIPlus_GraphicsDrawLine($hClockGraphic, $iOrigin, $iOrigin, $iOrigin + $ixHourOffset, $iOrigin - $iyHourOffset, $hHourPen)
            _GDIPlus_GraphicsDrawLine($hClockGraphic, $iOrigin, $iOrigin, $iOrigin + $ixMinOffset, $iOrigin - $iyMinOffset, $hMinPen)
            _GDIPlus_GraphicsDrawLine($hClockGraphic, $iOrigin, $iOrigin, $iOrigin + $ixSecOffset, $iOrigin - $iySecOffset, $hSecPen)
            _GDIPlus_GraphicsFillEllipse($hClockGraphic, $iOrigin - 3, $iOrigin - 3, 6, 6, $hNoseBrush)

            _GDIPlus_GraphicsDrawImageRect($hGraphic, $hClockBitmap, 0, 0, $iCanvasSz, $iCanvasSz)
        EndIf

    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    _GDIPlus_BrushDispose($hFrameBrush)
    _GDIPlus_BrushDispose($hNoseBrush)
    _GDIPlus_BrushDispose($hHighlightBrush)
    _GDIPlus_BrushDispose($hFaceBrush)
    _GDIPlus_PenDispose($hSecPen)
    _GDIPlus_PenDispose($hMinPen)
    _GDIPlus_PenDispose($hHourPen)
    _GDIPlus_PenDispose($hBlackPen)
    _GDIPlus_BitmapDispose($hClockBitmap)
    _GDIPlus_GraphicsDispose($hClockGraphic)

    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
EndFunc   ;==>Clock

Func WM_NCMBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam

    $iChSize = $iStartSz
EndFunc   ;==>WM_NCMBUTTONDOWN

Func WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam

    Local $iWheelDist, $iRate

    $iRate = 0.25
    $iWheelDist = BitShift($wParam, 16)

    $iChSize -= Int($iRate * $iWheelDist)
    If $iChSize < 120 Then $iChSize = 120
    If $iChSize > $iCanvasSz - (2 * $iMargin) Then $iChSize = $iCanvasSz - (2 * $iMargin)
EndFunc   ;==>WM_MOUSEWHEEL

Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam

    Return $HTCAPTION
EndFunc   ;==>WM_NCHITTEST
 

Hacker Is Real

Hãy like thay vì post thanks ❤❤❤!
Tặng bạn 1 cái nè.

Mã:
;Nhấn lên đồng hồ, Esc để thoát;
;Nhấn và giữ trên đồng hồ, kéo để thay đổi vị trí'
;Đặt con trỏ lên đồng hồ, cuộn để thay đổi kích thước;
;Nguồn: MattyD (AutoIT)
#AutoIt3Wrapper_Au3Check_Parameters = -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
#NoTrayIcon
#include <GDIPlus.au3>
#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Opt("MustDeclareVars", 1)

Global $hGUI, $iWinH, $iWinW, $iChSize, _
        $iStartSz, $iMargin, $iCanvasSz, $iWinXStartPos
Global Const $PI = 4 * ATan(1)
Global Const $MAGIC_PINK = 0xFF00FF, $MAGIC_PINK_ARGB = 0xFFFF00FF

$iWinH = @DesktopHeight
$iWinW = $iWinH
$iCanvasSz = $iWinH

$iMargin = 4
$iStartSz = Int($iWinH / 4) - (2 * $iMargin)
$iWinXStartPos = 0 ;Right Side: ide@DesktopWidth - ($iStartSz + (2 * $iMargin))

$hGUI = GUICreate("Clock", $iWinW, $iWinH, $iWinXStartPos, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
GUISetBkColor($MAGIC_PINK)
_WinAPI_SetLayeredWindowAttributes($hGUI, $MAGIC_PINK, 0xF0)
GUISetState(@SW_SHOW)

GUIRegisterMsg($WM_NCHITTEST, "WM_NCHITTEST")
GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL")
GUIRegisterMsg($WM_NCMBUTTONDOWN, "WM_NCMBUTTONDOWN")

Clock()

Func Clock()

    Local $hGraphic, $hClockBitmap, $hClockGraphic
    Local $iSize, $iDigSize, $iOrigin
    Local $iNumDist, $iDigXOffset, $iDigYOffset
    Local $ixOffset, $iyOffset
    Local $hFrameBrush, $hNoseBrush, $hHighlightBrush, $hFaceBrush
    Local $hBlackPen, $hSecPen, $hMinPen, $hHourPen
    Local $iSec, $iMin, $iHour
    Local $ixSecOffset, $iySecOffset, $ixMinOffset, $iyMinOffset, _
            $ixHourOffset, $iyHourOffset

    $iDigSize = $iSize / 20
    $iChSize = $iStartSz

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

    $hClockBitmap = _GDIPlus_BitmapCreateFromGraphics($iCanvasSz, $iCanvasSz, $hGraphic)
    $hClockGraphic = _GDIPlus_ImageGetGraphicsContext($hClockBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hClockGraphic, 4)

    $hFrameBrush = _GDIPlus_BrushCreateSolid(0xFF80BBCC)
    $hNoseBrush = _GDIPlus_BrushCreateSolid(0xEE778888)
    $hHighlightBrush = _GDIPlus_BrushCreateSolid(0x44FF00FF)
    $hFaceBrush = _GDIPlus_BrushCreateSolid(0xFFEEF0FF)

    $hSecPen = _GDIPlus_PenCreate(0xBB882255, 1)
    $hMinPen = _GDIPlus_PenCreate(0xBBFF8833, 4)
    $hHourPen = _GDIPlus_PenCreate(0xEE4488AA, 5)
    $hBlackPen = _GDIPlus_PenCreate(0xFF000000, 4)

    Do
        If $iSize <> $iChSize Or @SEC <> $iSec Then
            $iSize = $iChSize
            $iDigSize = $iSize / 20
            $iOrigin = Int($iSize / 2) + $iMargin

            $iNumDist = $iSize / 2 - ($iSize / 8)
            $iDigXOffset = .55 * $iDigSize
            $iDigYOffset = -(.7 * $iDigSize)

            _GDIPlus_GraphicsClear($hClockGraphic, $MAGIC_PINK_ARGB)

            _GDIPlus_GraphicsFillEllipse($hClockGraphic, $iMargin, $iMargin, $iSize, $iSize, $hFrameBrush)
            _GDIPlus_GraphicsFillEllipse($hClockGraphic, $iMargin + 8, $iMargin + 8, $iSize - 8, $iSize - 8, $hHighlightBrush)
            _GDIPlus_GraphicsFillEllipse($hClockGraphic, $iMargin + 8, $iMargin + 8, $iSize - 16, $iSize - 16, $hFaceBrush)
            _GDIPlus_GraphicsDrawEllipse($hClockGraphic, $iMargin, $iMargin, $iSize, $iSize, $hBlackPen)

            For $i = 1 To 12
                $ixOffset = Int($iNumDist * Sin($i * ($PI / 6)))
                $iyOffset = Int($iNumDist * Cos($i * ($PI / 6)))
                $ixOffset -= (StringLen($i) * $iDigXOffset)
                $iyOffset -= $iDigYOffset

                _GDIPlus_GraphicsDrawString($hClockGraphic, $i, ($iOrigin + $ixOffset), ($iOrigin - $iyOffset), "Symbol", $iDigSize)
            Next

            $iSec = @SEC
            $iMin = 60 * @MIN + $iSec
            $iHour = (3600 * @HOUR) + $iMin

            $ixSecOffset = Int((0.83 * $iNumDist) * Sin($iSec * ($PI / 30)))
            $iySecOffset = Int((0.83 * $iNumDist) * Cos($iSec * ($PI / 30)))

            $ixMinOffset = Int((0.85 * $iNumDist) * Sin($iMin * ($PI / 1800)))
            $iyMinOffset = Int((0.85 * $iNumDist) * Cos($iMin * ($PI / 1800)))

            $ixHourOffset = Int((0.65 * $iNumDist) * Sin($iHour * ($PI / 21600)))
            $iyHourOffset = Int((0.65 * $iNumDist) * Cos($iHour * ($PI / 21600)))

            _GDIPlus_GraphicsDrawLine($hClockGraphic, $iOrigin, $iOrigin, $iOrigin + $ixHourOffset, $iOrigin - $iyHourOffset, $hHourPen)
            _GDIPlus_GraphicsDrawLine($hClockGraphic, $iOrigin, $iOrigin, $iOrigin + $ixMinOffset, $iOrigin - $iyMinOffset, $hMinPen)
            _GDIPlus_GraphicsDrawLine($hClockGraphic, $iOrigin, $iOrigin, $iOrigin + $ixSecOffset, $iOrigin - $iySecOffset, $hSecPen)
            _GDIPlus_GraphicsFillEllipse($hClockGraphic, $iOrigin - 3, $iOrigin - 3, 6, 6, $hNoseBrush)

            _GDIPlus_GraphicsDrawImageRect($hGraphic, $hClockBitmap, 0, 0, $iCanvasSz, $iCanvasSz)
        EndIf

    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    _GDIPlus_BrushDispose($hFrameBrush)
    _GDIPlus_BrushDispose($hNoseBrush)
    _GDIPlus_BrushDispose($hHighlightBrush)
    _GDIPlus_BrushDispose($hFaceBrush)
    _GDIPlus_PenDispose($hSecPen)
    _GDIPlus_PenDispose($hMinPen)
    _GDIPlus_PenDispose($hHourPen)
    _GDIPlus_PenDispose($hBlackPen)
    _GDIPlus_BitmapDispose($hClockBitmap)
    _GDIPlus_GraphicsDispose($hClockGraphic)

    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
EndFunc   ;==>Clock

Func WM_NCMBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam

    $iChSize = $iStartSz
EndFunc   ;==>WM_NCMBUTTONDOWN

Func WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam

    Local $iWheelDist, $iRate

    $iRate = 0.25
    $iWheelDist = BitShift($wParam, 16)

    $iChSize -= Int($iRate * $iWheelDist)
    If $iChSize < 120 Then $iChSize = 120
    If $iChSize > $iCanvasSz - (2 * $iMargin) Then $iChSize = $iCanvasSz - (2 * $iMargin)
EndFunc   ;==>WM_MOUSEWHEEL

Func WM_NCHITTEST($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam

    Return $HTCAPTION
EndFunc   ;==>WM_NCHITTEST
code nào thế, mình học Pascal hà
 

malemkhoang

Rìu Chiến
SwissRailwayClock_03-DirectX%20Renderer_2012.11.15-12.04.26.png

Đồng hồ nhà ga xe lửa ở Thụy Sỹ
Mã:
;the Hilfiker / MobaTime Swiss Railway Clock
;coded by UEZ build 2018-03-01
;thanks to Eukalyptus for the _CreateBrushedAluminum() function!

#Pragma Compile(Icon, "GDI+ Swiss Railway Clock.ico")
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/so /pe /rm
#AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3"
#AutoIt3Wrapper_UseX64=n

Break(0)

#include <GDIPlus.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

ProcessSetPriority(@AutoItPID, $PROCESS_LOW)

_GDIPlus_Startup()
Global $hGUI, $iFPS = 0, $iShowFPS = 0, $bExit
Global Const $iW = 512, $iH = $iW, $iWh = $iW / 2, $iHh = $iH / 2, $sTitle = "GDI+ Swiss Railway Clock v1.1"
Global Const $fRad = ACos(-1) / 180, $fDeg = 180 / ACos(-1), $iTimer = 30, $fDeltaShadow = $iW * 0.020
Global $hDC, $hCanvas, $hBitmap_Clock, $hBrush_Shadow, $hBrush_Update, $hPen_Update, $fDiameter = $iW, $hDC_backbuffer, $fShadowAngle, $fMin_next, _
       $fRadius = $fDiameter / 2, $fSec, $fMin, $fHr, $fAmplitude = 3

AutoItSetOption("GUIOnEventMode", 1)

GDIPlus_SwissRailwayClock()

AutoItSetOption("GUIOnEventMode", 0)
_GDIPlus_Shutdown()


Func GDIPlus_SwissRailwayClock()
    $bExit = False
    $hGUI = GUICreate($sTitle, $iW + $fDeltaShadow, $iH + $fDeltaShadow, -1, -1, -1, $WS_EX_TOPMOST)
    GUISetBkColor(0xFFFFFF, $hGUI)
    GUISetState(@SW_SHOW, $hGUI)
;~  GUISetCursor(16, 1)

    ;create canvas elements
                $hDC = _WinAPI_GetDC($hGUI)
    Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW + $fDeltaShadow, $iH + $fDeltaShadow)
                $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC)
    Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap)
                $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer)
                $hBrush_Shadow = _GDIPlus_BrushCreateSolid(0x14A0A0A0)
                $hPen_Update = _GDIPlus_PenCreate(0xFFA02020)
                $hBrush_Update = _GDIPlus_BrushCreateSolid(0)
    _GDIPlus_GraphicsSetSmoothingMode($hCanvas, $GDIP_SMOOTHINGMODE_HIGHQUALITY)
    _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)

    $fDiameter = $fDiameter < 128 ? 128 : $fDiameter > 1024 ? 1024 : $fDiameter
                $hBitmap_Clock = GenerateClockBg($fDiameter)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About")

    $fMin_next = @MIN


    GUIRegisterMsg($WM_TIMER, "Draw") ;$WM_TIMER = 0x0113
    Local $iID = DllCall("User32.dll", "uint_ptr", "SetTimer", "hwnd", $hGUI, "uint_ptr", 1, "uint", $iTimer, "ptr", 0)[0]
    Do
        If $bExit Then ExitLoop
    Until Not Sleep(100)

    ;release resources
    GUIRegisterMsg($WM_TIMER, "")
    DllCall("user32.dll", "bool", "KillTimer", "hwnd", $hGUI, "uint_ptr", $iID)
    _GDIPlus_PenDispose($hPen_Update)
    _GDIPlus_BrushDispose($hBrush_Shadow)
    _GDIPlus_BrushDispose($hBrush_Update)
    _GDIPlus_GraphicsDispose($hCanvas)
    _WinAPI_SelectObject($hDC_backbuffer, $DC_obj)
    _WinAPI_DeleteDC($hDC_backbuffer)
    _WinAPI_DeleteObject($hHBitmap)
    _WinAPI_ReleaseDC($hGUI, $hDC)
    GUIDelete($hGUI)
EndFunc   ;==>GDIPlus_SwissRailwayClock

Func Draw($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam
    _GDIPlus_GraphicsDrawImageRect($hCanvas, $hBitmap_Clock, 0, 0, $fDiameter + $fDeltaShadow, $fDiameter + $fDeltaShadow)
    UpdateClock($hCanvas, $fDiameter)
    _WinAPI_BitBlt($hDC, 0, 0, $iW + $fDeltaShadow, $iH + $fDeltaShadow, $hDC_backbuffer, 0, 0, $SRCCOPY)
EndFunc

Func _Exit_About()
    $bExit = True
EndFunc   ;==>_Exit_About

Func UpdateClock($hGfx, $fDiameter)
    Static $bBounce = 0, $f = 0
    Local $m1 = $fDiameter * 0.015
    ;hour
    $fHr = 30 * (@HOUR + @MIN / 60)
    _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
    _GDIPlus_GraphicsRotateTransform($hGfx, $fHr)
    _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)
    Local $iWidth1 = $fDiameter * 0.0375, _
          $iHeight1 = $fDiameter / 2.5, _
          $iWidth12 = $iWidth1 / 2, _
          $fPosY = $fDiameter * 0.2, $iWidth2, $iWidth22, $fPosY2


    _GDIPlus_BrushSetSolidColor($hBrush_Update, 0xFF101010)

    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Shadow, _
                           "float", $fRadius - $iWidth12 + Cos(($fShadowAngle - $fHr) * $fRad) * $m1, _
                           "float", $fPosY + Sin(($fShadowAngle - $fHr) * $fRad) * $m1, _
                           "float", $iWidth1, "float", $iHeight1)
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth12, _
                           "float", $fPosY, _
                           "float", $iWidth1, "float", $iHeight1)
    _GDIPlus_GraphicsResetTransform($hGfx)

    ;min
    If $fMin_next <> @MIN Then $bBounce = 1
    Switch $bBounce
        Case 1
            $fMin = (6 * Mod(($fMin_next + 1), 60)) + Sin($f * 1.9) * $fAmplitude
            If $fAmplitude = 0 Then
                $fMin_next = @MIN
                $f = 0
                $fAmplitude = 3
                $bBounce = 0
            Else
                $fAmplitude -= 0.5
                $fAmplitude = $fAmplitude <= 0 ? 0 : $fAmplitude
                $f += 1
            EndIf
        Case Else
            $fMin = (6 * @MIN)
    EndSwitch
    _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
    _GDIPlus_GraphicsRotateTransform($hGfx, $fMin)
    _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)
    $iWidth1 = $fDiameter * 0.03
    $iHeight1 = $fRadius
    $iWidth12 = $iWidth1 / 2
    $fPosY = $fDiameter * 0.1
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Shadow, _
                           "float", $fRadius - $iWidth12 + Cos(($fShadowAngle - $fMin) * $fRad) * $m1, _
                           "float", $fPosY + Sin(($fShadowAngle - $fMin) * $fRad) * $m1, _
                           "float", $iWidth1, "float", $iHeight1)
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth12, _
                           "float", $fPosY, _
                           "float", $iWidth1, "float", $iHeight1)
    _GDIPlus_GraphicsResetTransform($hGfx)

    ;sec
    $fSec = 6 * (@SEC * 1.02564 + @MSEC / 1000)
    If $fSec >= 360 Then $fSec = 0
    _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
    _GDIPlus_GraphicsRotateTransform($hGfx, $fSec)
    _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)
    $fPosY = $fDiameter * 0.27
    $fPosY2 = $fDiameter * 0.19
    $iWidth1 = $fDiameter * 0.0095
    $iHeight1 = $fRadius * 1.3 - $fPosY
    $iWidth12 = $iWidth1 / 2
    $iWidth2 = $fDiameter * 0.083333
    $iWidth22 = $iWidth2 / 2


    ;shadow seconds
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Shadow, _
                           "float", $fRadius + Cos(($fShadowAngle - $fSec) * $fRad) * $m1, _
                           "float", $fPosY + Sin(($fShadowAngle - $fSec) * $fRad) * $m1, _
                           "float", $iWidth1 + $fDiameter * 0.006667, "float", $iHeight1 + $fDiameter * 0.006667)
    DllCall($__g_hGDIPDll, "int", "GdipFillEllipse", "handle", $hGfx, "handle", $hBrush_Shadow, _
                           "float", $fRadius - $iWidth22 + Cos(($fShadowAngle - $fSec) * $fRad) * $m1, _
                           "float", $fPosY2 + Sin(($fShadowAngle - $fSec) * $fRad) * $m1, _
                           "float", $iWidth2, "float", $iWidth2)
    ;seconds
    _GDIPlus_BrushSetSolidColor($hBrush_Update, 0xFFC01010)
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth12, _
                           "float", $fPosY, _
                           "float", $iWidth1, "float", $iHeight1)
    DllCall($__g_hGDIPDll, "int", "GdipFillEllipse", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth22, _
                           "float", $fPosY2, _
                           "float", $iWidth2, "float", $iWidth2)
    _GDIPlus_GraphicsResetTransform($hGfx)

    ;button in the center
    DllCall($__g_hGDIPDll, "int", "GdipFillEllipse", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth1, _
                           "float", $fRadius - $iWidth1, _
                           "float", 2 * $iWidth1, "float", 2 * $iWidth1)
    DllCall($__g_hGDIPDll, "int", "GdipDrawEllipse", "handle", $hGfx, "handle", $hPen_Update, _
                           "float", $fRadius - $iWidth1, _
                           "float", $fRadius - $iWidth1, _
                           "float", 2 * $iWidth1, "float", 2 * $iWidth1)
EndFunc

Func GenerateClockBg($fDiameter)
    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($fDiameter + $fDeltaShadow, $fDiameter + $fDeltaShadow), $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap), _
                $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000), $fBorderSize = $fDiameter * 0.03333, _
                $hEffect = _GDIPlus_EffectCreateBlur($fDiameter / 50, 0), $hPen = _GDIPlus_PenCreate(0xA0000000, $fBorderSize)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4)
    _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, 4)
    _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 4)
    _GDIPlus_GraphicsClear($hGfx, 0xFFFFFFFF)
    Local Const $fSize = $fDiameter * 0.95 - $fBorderSize / 2
    Local $fShadow_vx = $fDiameter * 0.0095, $fShadow_vy = $fDiameter * 0.01
    $fShadowAngle = ATan($fShadow_vy / $fShadow_vx) * $fDeg
    If $fShadow_vx < 0 And $fShadow_vy >= 0 Then $fShadowAngle += 180
    If $fShadow_vx < 0 And $fShadow_vy < 0 Then $fShadowAngle -= 180
    _GDIPlus_GraphicsDrawEllipse($hGfx, $fBorderSize + $fShadow_vx, $fBorderSize + $fShadow_vy, $fSize, $fSize, $hPen)
    _GDIPlus_BitmapApplyEffect($hBitmap, $hEffect)

    _GDIPlus_PenSetColor($hPen, 0xF0000000)
    Local Const $hBitmap_Texture = _CreateBrushedAluminum($fDiameter, $fDiameter, $fShadowAngle)
    Local Const $hTexture = _GDIPlus_TextureCreate($hBitmap_Texture)
    DllCall($__g_hGDIPDll, "int", "GdipSetPenBrushFill", "ptr", $hPen, "ptr", $hTexture)
    _GDIPlus_GraphicsDrawEllipse($hGfx, $fBorderSize, $fBorderSize, $fSize, $fSize, $hPen)

    _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
    _GDIPlus_GraphicsRotateTransform($hGfx, -6)
    _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)

    Local $iWidth1 = $fDiameter * 0.026667, $iHeight1 = $fDiameter / 10, $iWidth12 = $iWidth1 / 2, $fPosY = $fDiameter * 0.083333, _
          $iWidth2 = $fDiameter * 0.013333, $iHeight2 = $fDiameter * 0.0416667, $iWidth22 = $iWidth2 / 2
    For $i = 0 to 59
        _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
        _GDIPlus_GraphicsRotateTransform($hGfx, 6)
        _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)
        Switch Mod($i, 5)
            Case 0
                _GDIPlus_GraphicsFillRect($hGfx, $fRadius - $iWidth12, $fPosY, $iWidth1, $iHeight1, $hBrush)
            Case Else
                _GDIPlus_GraphicsFillRect($hGfx, $fRadius - $iWidth22, $fPosY, $iWidth2, $iHeight2, $hBrush)
        EndSwitch
    Next
    _GDIPlus_GraphicsResetTransform($hGfx)

    Local Const $hBitmap_Logo = _GDIPlus_BitmapCreateFromMemory(_Au3_Icon())
    Local Const $hBitmap_Logo_Scaled = _GDIPlus_ImageResize($hBitmap_Logo, $fDiameter * 0.08, $fDiameter * 0.08)
    Local $aDim = _GDIPlus_ImageGetDimension($hBitmap_Logo_Scaled)
    _GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap_Logo_Scaled, $fRadius - $aDim[0] / 2, $fRadius / 1.75, $aDim[0], $aDim[1])
    _GDIPlus_ImageDispose($hBitmap_Logo)
    _GDIPlus_ImageDispose($hBitmap_Logo_Scaled)

    Local Const $hFamily = _GDIPlus_FontFamilyCreate("Segoe Script"), $hFont = _GDIPlus_FontCreate($hFamily, $fDiameter * 0.025), $hFormat = _GDIPlus_StringFormatCreate()
    _GDIPlus_StringFormatSetAlign($hFormat, 1)
    _GDIPlus_StringFormatSetLineAlign($hFormat, 1)
;~  _GDIPlus_BrushSetSolidColor($hBrush, 0xFF400000)
    _GDIPlus_GraphicsDrawStringEx($hGfx, "Clock by" & @CRLF & "MLK", $hFont, _GDIPlus_RectFCreate($fRadius - $fRadius * 0.2, $fRadius + $fRadius * 0.2, $fRadius * 0.4, $fRadius * 0.4), $hFormat, $hBrush)

    _GDIPlus_ImageDispose($hBitmap_Texture)
    _GDIPlus_BrushDispose($hTexture)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_EffectDispose($hEffect)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGfx)
    Return $hBitmap
EndFunc

Func _CreateBrushedAluminum($iW, $iH, $fLightAngle = 40, $iBlurDist = 12, $fBlurTrans = 0.6666, $fRed = 0.8, $fGreen = 0.9, $fBlue = 1, $iLightColor = 0xF0FFFFFF, $fLightSigma = 0.5, $fLightScale = 0.83) ;coded by Eukalyptus!
    $iBlurDist = Ceiling($iBlurDist)
    $iBlurDist += 1 - Mod($iBlurDist, 2)

    Local $iOverSize = 0
    For $i = 1 To $iBlurDist Step 2
        $iOverSize += $i + $i + 1
    Next

    Local $iWO = $iW + $iOverSize

    ;=========================================
    ; Add Noise
    ;=========================================

    Local $iNoiseSize = 40

    Local $hBmp_Noise = _GDIPlus_BitmapCreateFromScan0($iNoiseSize, $iNoiseSize)
    Local $hGfx_Noise = _GDIPlus_ImageGetGraphicsContext($hBmp_Noise)

    Local $tData = _GDIPlus_BitmapLockBits($hBmp_Noise, 0, 0, $iNoiseSize, $iNoiseSize, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32ARGB)
    Local $iStride = DllStructGetData($tData, "Stride")
    Local $iWidth = DllStructGetData($tData, "Width")
    Local $iHeight = DllStructGetData($tData, "Height")
    Local $pScan0 = DllStructGetData($tData, "Scan0")
    Local $tPixel = DllStructCreate("dword[" & $iWidth * $iHeight & "];", $pScan0)

    Local $iAmp
    For $row = 0 To $iHeight - 1
        For $col = 0 To $iWidth - 1
            $iAmp = Random(0, 0xFF, 1)
            DllStructSetData($tPixel, 1, BitOR(0xFF000000, BitShift($iAmp, -16), BitShift($iAmp, -8), $iAmp), $row * $iWidth + $col + 1)
        Next
    Next

    _GDIPlus_BitmapUnlockBits($hBmp_Noise, $tData)


    ;=========================================
    ; Create Full NoiseBitmap
    ;=========================================

    Local $hBmp_Full = _GDIPlus_BitmapCreateFromScan0($iWO, $iH)
    Local $hGfx_Full = _GDIPlus_ImageGetGraphicsContext($hBmp_Full)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Full, 4)
    _GDIPlus_GraphicsSetInterpolationMode($hGfx_Full, 3)

    Local $iXOff, $iYOff, $iSizeX, $iSizeY
    For $y = 0 To $iH Step $iNoiseSize / 2
        For $x = 0 To $iWO Step $iNoiseSize / 2
            $iXOff = Random(0, $iNoiseSize / 2, 1)
            $iYOff = Random(0, $iNoiseSize / 2, 1)
            $iSizeX = $iNoiseSize - $iXOff
            $iSizeY = $iNoiseSize - $iYOff
            _GDIPlus_GraphicsDrawImageRectRect($hGfx_Full, $hBmp_Noise, $iXOff, $iYOff, $iSizeX, $iSizeY, $x, $y, $iSizeX, $iSizeY)
        Next
    Next

    _GDIPlus_GraphicsDispose($hGfx_Noise)
    _GDIPlus_BitmapDispose($hBmp_Noise)



    ;=========================================
    ; MotionBlur
    ;=========================================
    Local $hBmp_Full2 = _GDIPlus_BitmapCreateFromScan0($iWO, $iH)
    Local $hGfx_Full2 = _GDIPlus_ImageGetGraphicsContext($hBmp_Full2)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Full2, 4)
    _GDIPlus_GraphicsSetInterpolationMode($hGfx_Full, 3)

    Local $tColorMatrix = DllStructCreate("float[5]; float[5]; float[5]; float[5]; float[5];")
    DllStructSetData($tColorMatrix, 1, 1, 1)
    DllStructSetData($tColorMatrix, 2, 1, 2)
    DllStructSetData($tColorMatrix, 3, 1, 3)
    DllStructSetData($tColorMatrix, 4, $fBlurTrans, 4)
    DllStructSetData($tColorMatrix, 5, 1, 5)

    Local $hImgAttrib = _GDIPlus_ImageAttributesCreate()
    DllCall($__g_hGDIPDll, "int", "GdipSetImageAttributesColorMatrix", "ptr", $hImgAttrib, "int", 1, "int", 1, "struct*", $tColorMatrix, "struct*", 0, "int", 0)
    For $i = 1 To $iBlurDist Step 2
        DllCall($__g_hGDIPDll, "int", "GdipDrawImageRectRect", "ptr", $hGfx_Full2, "ptr", $hBmp_Full, _
                               "float", $i, "float", 0, "float", $iWO, "float", $iH, _
                               "float", 0, "float", 0, "float", $iWO, "float", $iH, _
                               "int", 2, "ptr", $hImgAttrib, "ptr", 0, "ptr", 0)
        If $i >= $iBlurDist Then
            DllStructSetData($tColorMatrix, 1, $fRed, 1)
            DllStructSetData($tColorMatrix, 2, $fGreen, 2)
            DllStructSetData($tColorMatrix, 3, $fBlue, 3)
            DllStructSetData($tColorMatrix, 4, 1, 4)
            DllCall($__g_hGDIPDll, "int", "GdipSetImageAttributesColorMatrix", "ptr", $hImgAttrib, "int", 1, "int", 1, "struct*", $tColorMatrix, "struct*", 0, "int", 0)
        EndIf
        DllCall($__g_hGDIPDll, "int", "GdipDrawImageRectRect", "ptr", $hGfx_Full, "ptr", $hBmp_Full2, _
                               "float", $i + 1, "float", 0, "float", $iWO, "float", $iH, _
                               "float", 0, "float", 0, "float", $iWO, "float", $iH, _
                               "int", 2, "ptr", $hImgAttrib, "ptr", 0, "ptr", 0)
    Next
    _GDIPlus_ImageAttributesDispose($hImgAttrib)

    _GDIPlus_GraphicsDispose($hGfx_Full2)
    _GDIPlus_BitmapDispose($hBmp_Full2)
    _GDIPlus_GraphicsDispose($hGfx_Full)

    ;=========================================
    ; Add Light
    ;=========================================

    Local $hBmp_Alu = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
    Local $hGfx_Alu = _GDIPlus_ImageGetGraphicsContext($hBmp_Alu)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Alu, 4)
    _GDIPlus_GraphicsSetInterpolationMode($hGfx_Full, 3)

    _GDIPlus_GraphicsDrawImage($hGfx_Alu, $hBmp_Full, -$iOverSize, 0)
    _GDIPlus_BitmapDispose($hBmp_Full)

    Local $tPointF1 = DllStructCreate("float; float;")
    Local $tPointF2 = DllStructCreate("float; float;")
    DllStructSetData($tPointF2, 2, $iH * $fLightScale)

    $aResult =   DllCall($__g_hGDIPDll, "int", "GdipCreateLineBrush", "struct*", $tPointF1, "struct*", $tPointF2, "uint", 0, "uint", $iLightColor, "int", 0, "handle*", 0)
    If @error Or Not IsArray($aResult) Then Return SetError(1, 4, False)
    Local $hBrush = $aResult[6]

    _GDIPlus_LineBrushSetSigmaBlend($hBrush, $fLightSigma)
    _GDIPlus_LineBrushSetGammaCorrection($hBrush)
    DllCall($__g_hGDIPDll, "int", "GdipRotateLineTransform", "ptr", $hBrush, "float", $fLightAngle, "int", 0)

    _GDIPlus_GraphicsFillRect($hGfx_Alu, 0, 0, $iW, $iH, $hBrush)

    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGfx_Alu)

    Return $hBmp_Alu
EndFunc   ;==>_CreateBrushedAluminum


;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2018-02-02

Func _Au3_Icon($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $Au3_Icon
    $Au3_Icon &= 'iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAP0ElEQVR4XtWZW4hs6VXHf+v79qWquruquqtvZ/r0uc8540yScTIQQ0JkDOYyGhIkhhAxxhdR8mDAgAg+6FsE9UVffNMH8S0ERAwS1DFeEo3m6owzmUySc+Zc+15VXZd9+dZyp6ro4pDTORlGIfnDn703TW/+//X9v/Wt3i3PPfccP85w/GhBgLqkS23ixhpRfau6bgItIPpRN5Ag0Xl88jYrxu/E+KA492E0vJd44d245BKQ/H8bkAe80wMOEE5HA5c8SpQ822yv/ubW9vnfffyxR3+vs7r6YcS9HewZnP9ZXPwE0Py/NuCBJj65iERvQPybcNFP4JKzuPgq+CeR6GnwV3FJB4juM+mSNj55Ehe97/LFC5947PL2ey5tb755daW1+fiVc295+qk3fuTShfPPPnb10d+J60sfI6o9BbRer4EIaOLis1Nh6dtBfs6ljY82ljqfiNLFX8X597uk/ksrG4/8ftJo/lq62P51XPQOJHoc3DV8egZYxLkLcW3xQ088fvWTj2ysXItjnxRlGY6Ojmxvb98iJwtnz6xeXO80tx+9tP0Rcf6tuHhzLuS1YwmJLiHuslRVbzQbjydJsrXSbl4RIVlpLZ0xM71+e+cbC41a+8zayuVxlo9CCPnX/vslt7S89iEzy4/7R/+MT7+Lhq2V5dbbO63Ftbwog/feDYdDt7e3R71eo9vt2tbWlkZRRC1NFkHWQDpACmQ/bBuVWUyaiN+Kk9oH2q3mO/Ky0HNn1p9sNxeaBpiBmpl3TlTNqouoqkmFoKp5XuT1NKlVFS5ffOXm54ui2EFIr17afudCLV1SM5mBity+fRuAzc1NVC1EkfN3dg+/9e1vf/ePMfssYXz9hzXQJKo/BTyKlovrZ7Y+fPXi1luryubOOeKqPBpKQiilLAMhBAwEw7x3RN9jFImPIhTR8TjPQghFvZY2s7wYpkmc'
    $Au3_Icon &= 'Ag5ARFBVuXHjBpVPqurTaDRMVRERQgjll776wp9YKP+KMP5a9NCsS7SBuHMgb2stt9+13FraXltubYegmkRRMh4POTwccdAbMy4CQTFDBBEDABMvYmnirNVIaC3UpVFP667WqFdmrRLfYA7MDIBWq0WaplQRIo5j8d6bVvDOxbV6fXV03C0BeYgBvyxx7R1prfbs2srym8+e6bxhtrwMjnt276Bv3UGOuYQ4bVCrJ1JVWtxEvxO0xBHIiiBVpbnbLexetysLidjmygKLCwsYzjATwACpQK/XY2VlBTNjZ2cHVTXvvYkgg3F2lI2z2+ByIEScjgRx23GSPvPU41d+BQE1zMqCnb197h2NxCeLttBeliiOmCUGDIIJFgIbzYh2IyUoqBrHo0LuHQ4ozMl37g1sqTaUrdWWJbW6haAChnOOPM/Z3d1lNBpRVX/CEJTIOxkOs2Mt8z4iAHa6ARdvVnzL+a3NnzfMVNEyz/z1Wzt2XHgWW+tUwkUV8tKYlQ81IZLA9nJMI40IaohAFAnLSxHeSm7sDWi0VuR4cMxLN/fl0maLxsICqlRUVldXOTg4IEkSOp2OVUAE1Iz+YLSHyAAYndZGE1yyAXqt1Wq/b3Vl6WxQC/lo4F5+dccK15Dmchs1yEpAHCAwEe+IKbm8GhN5T6mKEwGmwgAWFxdYHo7Y6fdoLDUZDz0vvnrI1S1lYXEJnRmuhANYBalozolT1dDt97+Chq+j+f6DDUh0Bh8/k9br7754buOng5oW2ci9fGNHxtRoLrbIgwEecw5sasAQRAPnVx3eC0UIE/FmxhxgwMZqm1G+T/d4SL3eoAzKizcPefycUG8soqqEEAxMzFARIcvL8fWbO18YH/c+DfICcPwgA4JZa2lp6b3XLp39kK8QQtBbd/ZlUIgttJakNFA8OIeZQ5hVPyhnm0Y9dpTBEMDMeBBMPGc6i/RvdRnnCVWTIMvHfPPWEU+c97iohpmad47jcda/u3Pw/MHh'
    $Au3_Icon &= '0b+Zll8GfREtd08bJSJ81DgeDO6WQYOBHh3uy04/M5c0RCaxEBSHmsNMUKBUo5Uo6w0hVwEzToOZQcW01uCR5ZQym2zqSRcbZyW39gdgATPEgLu7hy/v7+3+jWn5GUz/Hi1vAPagUaKGS65geqndbD2ZJnE8Hh3bzb0BuFgkignq0FnmMWaCIHElFzuO0jwOQ+bR+YFGaomHMJyumIvAp1RdirVmnaRWMxGcqwi2i9mrhGyHOe43gEQrLq698+wj6x9f77SvWYVefyjjgOBjwKMiGG4uXsBZydU1jyGoKhpK8iLHe08cJ4gID4aAAhZQA8GBj7Gi4Ob+gMuPREBCGUKJWQNYBASw08bpBbDVtZXWNQPLs6FVvV6QyHAROmuRChigCGjg0rIjdTqpYlHk3L5zl2rO4Tu39iZmDDCzCZnfT4gTmL8PnAMXczTIyPOAqlk1JJ73Sf2NOH9pZoIHGYiApXqjcQVMMXQ8GssoV8NFgngMhyLA1IgLGRfa0K4beZCJ2J3dXfa7Q6I4pV9E3D0YYmV2f/7n90RRTC1yWChQExAPPsJUORzkTjVYNaVuXLm0/UHEXcDXaqcZSBBZi6NoAwRMGWUlhkzE4zwgqBoGYIGzLWG1rmQlOIHjfo+j45z11RUKE6ivcHsYca+bI9j0d21OMMR5Uq9okaEA4k5YGTBMKVV1MBwfYhpVbJy+AuKaYJEZqAbpjQoQx5yCMTspG8ZG05Opm4kL9IYZucJOd0AZL4G4yQgQxTXAMO6PkAF5NqY/KjAXA8LcgGecl6JBEcH1+sd3QFpA68EGosbC7IfxNNqlZaWdCAem92Y0IuXiMuQB5EQUdNotttY7bK52OL+6yLWO8pObsLboCMr3nws2NZAFAZ8whZwY0aAoAoY16rVVIIAVD+5CpklVqcvVmHwFM1TVBTU5GRNwiBnLDcfVjpIHB6bMAbVaQqNeQ8RQVcBRmCGnHWYYWZ5jEoGraDoTP6WpEYKK91YV'
    $Au3_Icon &= 'pX1ld+/Ah6zonxYhFCsXGumqqk2fDDspCkanIVxbKRkHh6l+X09XNcoQKEolmKAnwgUDzO7fyKZKVgTwMYh7gEFsQtNw697BC6HIR4ic0oUEESQKqkFEHCYmjpMe5zAudCLGFoHp97dDQEQwZmbKchqPYZ9B/4DxoIdqeSJezQhlwTAvwaecQDiBiMwe8cvtxS0fpxfAWoB7QIQoQlm8/NIrNz9z7fLZ94vzSeycZaWJYDzxSB1MmW2q+0TrieAReZ6RF4FRHhgXSqEQJkl0PLadkiR+ZkIIoWCUGdRjmB/rJxQRvBfMQIwESEGSmQG930AY7+HS5/N8fCXPy6KeuiSNnR2Pc1mqJ5ONOywU78BsLjwfjRj0e5NO0s+UIH5aUV+HKJlm21fUkkwhwVAzBCiLgmCAiwG7n6b4yIub6VcsA7uO6Q4QHjRKFGg5rObzs/VasmiqZZr4qJrd7bGtBcnyAifzHIeg9LoH7B70GWoEyRIsLEzFu1nnMuaVRRjmBUupYgrihLIsURyIZ155nVIDjSRR50Sq9tx7+ZXrf46Gf8TKm4CdMguJz4uil+fFKIp80lxo2NZ6g+oZVQXmq9w9OuDmzhFaW4HFzrTSGNicU9hJsPMAmAIOwyjLAM7PzOr9xGgvpZhBvz/aE/HerMiA0WldSIGeqXZFJC6Dulq9ThmChBAwM0wVMxgOj7m730NrHVhYB+fAwikjtIAACGqAKjp7V1AD8QD3VZ5Q4H1kywux5EXQ732Ra7eab0I1AO40AyCupxpe2T/qf9P7yMTUiqKwk9YnMhnWDg+PyKUOjc682gg/EMJ8jzKFqoG4k8xjYUot6LQagikGriyDdnv9zyNyBJSnG9C8b0X2D3mpN9MkcveJB1SV7tE+B4MwFY8ADxEv833pBEwAM8bjMaNxBshcvJYQcpyPbKtTpyjNIufk7l73q1qMvoiVuwCnGRAgixvNKxe21t+VZVlpZq6izA4pBsd9dg5HkDZn'
    $Au3_Icon &= 'J2eYb9RTMPdn1GLBcJhN33WUCcQNCMWEUwMF2+st0RCsAkf94W7/ePAVzO4Ag1MNzNDcPrP+B2aBEALARLzBJDp7B10CHnwCIQct59l/iAlBaUSgBoJRBp2KdxHo7F3FiFaraZ0Fb3kRDCyr/pz8pyIbfRa4B+hpBhLAti9cfmahnjyd53kBRFYBwFSt1+vZOC8hSkHnFZsygCmg87zcvwSIMR2bDcyUrFSAaSFCCeWIWr1hV9YbMspKjSPnrt/e/fdsNPg7TL9xWnyYn2qkYL/ovVPVWVLNBGA4HNLrDzmz1rbVVsMIGRVtugoFWDE3MjMzp4HmRGSIQBXNybfOLC/BbGqgGFq93uCJc21GeaFR5P0oK3pl0Bugz6P57R+U0wgoN7fO/8Zyq/nRooJhEYZUsLIsqDqA1Bs1lpotW9IgiXfcORqJlSNwCfgIxE84H78FYHofCupRCfjJp8K9wz4BD24SQVtpt+XiRsOqTY2A6/aGt1+9c+8vLBSfI4RXgIzTQQSki43axzHVEILI/Eua9fsDd9TtXd/c2Iy9d49kQfP2YhotNWJ5dW/EMJusguBicBMTcwPCFKqYQCgDg1FGXhqIWpQmnD/Tpplig9EYAesNsnu37tz7S9Pw14Tsf4AeD0F0/tLlReekphoEEDAB0SzL5ODoqI/qn+0e9ZezUp9dbjbOJ/W0aRAurNUlK+vubndsw6zAilwQARy4+SqIlZShIGt2LIQgca1h651l1tt1iqKQ42EIceTdzn7v+b39/U+L889j4VtT8Q+HfOUbL3zq7Ob6J800VlWbfR3W3b193z06/EPEfwoXP+ai+BdWO+0PFEXIq/3wBjAwVGazd29U0q+YFYGghjFF7KDmApVGGQ2PbWOtI1WzIC8Vg1Bp94fdwau37+78KdhzaHgFLbpA4OEgwmzNmPR8RCZDVuj2elG3e/S5NIn/KMuLQyR+Ucv80zs7ey+BbVVinIjUVpcXL816O82613Zd'
    $Au3_Icon &= 'gMTEOQcCqIo4RlkpVRu2Uk129w8DneWxeO9v3N79l+pCnuVfxvRfCdkLwIDXAPnSf33tU+fOnvktEXNFUUi1af3e3sHXNRQfA746P0+p4eJlxJ9D5I3OR09fPnfml6vD5m6rubCdRC4FAUDNdDTOe977ej2NUjOjdzxgNBwVh73h3/ooGXrvk2w8esE0PI9Nus11oM9rhHzhi//xtpXV1c+msW92uz0ODw6fA/1t4Es8GDEu3kDcFRclP6Ua2nGcbMdxvI4hzossLdQvAeRFeS/Liv00jddUtej2Bs9pKP4TDYdgOdBD3C4h2wcCrx1M/8kn7j2Y/gxwM03Tz2RZdouHo4GLOuA2EGliNBGpY3qM8+uAoeV3MBvjXBucTJ5dfIcwGgIGlIDxOjAx8DrhgQioEdUjxCmmEQDlaDATGTPF+JRKv24Dbp71GX9M8L84Jo46QVTs6gAAAABJRU5ErkJggg=='
    Local $bString = _WinAPI_Base64Decode($Au3_Icon)
    If @error Then Return SetError(1, 0, 0)
    $bString = Binary($bString)
    If $bSaveBinary Then
        Local Const $hFile = FileOpen($sSavePath & "\au3-icon2.png", 18)
        If @error Then Return SetError(2, 0, $bString)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return $bString
EndFunc   ;==>_Au3_Icon

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode
 

thaohhk29

Rìu Bạc
SwissRailwayClock_03-DirectX%20Renderer_2012.11.15-12.04.26.png

Đồng hồ nhà ga xe lửa ở Thụy Sỹ
Mã:
;the Hilfiker / MobaTime Swiss Railway Clock
;coded by UEZ build 2018-03-01
;thanks to Eukalyptus for the _CreateBrushedAluminum() function!

#Pragma Compile(Icon, "GDI+ Swiss Railway Clock.ico")
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/so /pe /rm
#AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_stripped.au3"
#AutoIt3Wrapper_UseX64=n

Break(0)

#include <GDIPlus.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

ProcessSetPriority(@AutoItPID, $PROCESS_LOW)

_GDIPlus_Startup()
Global $hGUI, $iFPS = 0, $iShowFPS = 0, $bExit
Global Const $iW = 512, $iH = $iW, $iWh = $iW / 2, $iHh = $iH / 2, $sTitle = "GDI+ Swiss Railway Clock v1.1"
Global Const $fRad = ACos(-1) / 180, $fDeg = 180 / ACos(-1), $iTimer = 30, $fDeltaShadow = $iW * 0.020
Global $hDC, $hCanvas, $hBitmap_Clock, $hBrush_Shadow, $hBrush_Update, $hPen_Update, $fDiameter = $iW, $hDC_backbuffer, $fShadowAngle, $fMin_next, _
       $fRadius = $fDiameter / 2, $fSec, $fMin, $fHr, $fAmplitude = 3

AutoItSetOption("GUIOnEventMode", 1)

GDIPlus_SwissRailwayClock()

AutoItSetOption("GUIOnEventMode", 0)
_GDIPlus_Shutdown()


Func GDIPlus_SwissRailwayClock()
    $bExit = False
    $hGUI = GUICreate($sTitle, $iW + $fDeltaShadow, $iH + $fDeltaShadow, -1, -1, -1, $WS_EX_TOPMOST)
    GUISetBkColor(0xFFFFFF, $hGUI)
    GUISetState(@SW_SHOW, $hGUI)
;~  GUISetCursor(16, 1)

    ;create canvas elements
                $hDC = _WinAPI_GetDC($hGUI)
    Local Const $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $iW + $fDeltaShadow, $iH + $fDeltaShadow)
                $hDC_backbuffer = _WinAPI_CreateCompatibleDC($hDC)
    Local Const $DC_obj = _WinAPI_SelectObject($hDC_backbuffer, $hHBitmap)
                $hCanvas = _GDIPlus_GraphicsCreateFromHDC($hDC_backbuffer)
                $hBrush_Shadow = _GDIPlus_BrushCreateSolid(0x14A0A0A0)
                $hPen_Update = _GDIPlus_PenCreate(0xFFA02020)
                $hBrush_Update = _GDIPlus_BrushCreateSolid(0)
    _GDIPlus_GraphicsSetSmoothingMode($hCanvas, $GDIP_SMOOTHINGMODE_HIGHQUALITY)
    _GDIPlus_GraphicsSetPixelOffsetMode($hCanvas, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)

    $fDiameter = $fDiameter < 128 ? 128 : $fDiameter > 1024 ? 1024 : $fDiameter
                $hBitmap_Clock = GenerateClockBg($fDiameter)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit_About")

    $fMin_next = @MIN


    GUIRegisterMsg($WM_TIMER, "Draw") ;$WM_TIMER = 0x0113
    Local $iID = DllCall("User32.dll", "uint_ptr", "SetTimer", "hwnd", $hGUI, "uint_ptr", 1, "uint", $iTimer, "ptr", 0)[0]
    Do
        If $bExit Then ExitLoop
    Until Not Sleep(100)

    ;release resources
    GUIRegisterMsg($WM_TIMER, "")
    DllCall("user32.dll", "bool", "KillTimer", "hwnd", $hGUI, "uint_ptr", $iID)
    _GDIPlus_PenDispose($hPen_Update)
    _GDIPlus_BrushDispose($hBrush_Shadow)
    _GDIPlus_BrushDispose($hBrush_Update)
    _GDIPlus_GraphicsDispose($hCanvas)
    _WinAPI_SelectObject($hDC_backbuffer, $DC_obj)
    _WinAPI_DeleteDC($hDC_backbuffer)
    _WinAPI_DeleteObject($hHBitmap)
    _WinAPI_ReleaseDC($hGUI, $hDC)
    GUIDelete($hGUI)
EndFunc   ;==>GDIPlus_SwissRailwayClock

Func Draw($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam, $lParam
    _GDIPlus_GraphicsDrawImageRect($hCanvas, $hBitmap_Clock, 0, 0, $fDiameter + $fDeltaShadow, $fDiameter + $fDeltaShadow)
    UpdateClock($hCanvas, $fDiameter)
    _WinAPI_BitBlt($hDC, 0, 0, $iW + $fDeltaShadow, $iH + $fDeltaShadow, $hDC_backbuffer, 0, 0, $SRCCOPY)
EndFunc

Func _Exit_About()
    $bExit = True
EndFunc   ;==>_Exit_About

Func UpdateClock($hGfx, $fDiameter)
    Static $bBounce = 0, $f = 0
    Local $m1 = $fDiameter * 0.015
    ;hour
    $fHr = 30 * (@HOUR + @MIN / 60)
    _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
    _GDIPlus_GraphicsRotateTransform($hGfx, $fHr)
    _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)
    Local $iWidth1 = $fDiameter * 0.0375, _
          $iHeight1 = $fDiameter / 2.5, _
          $iWidth12 = $iWidth1 / 2, _
          $fPosY = $fDiameter * 0.2, $iWidth2, $iWidth22, $fPosY2


    _GDIPlus_BrushSetSolidColor($hBrush_Update, 0xFF101010)

    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Shadow, _
                           "float", $fRadius - $iWidth12 + Cos(($fShadowAngle - $fHr) * $fRad) * $m1, _
                           "float", $fPosY + Sin(($fShadowAngle - $fHr) * $fRad) * $m1, _
                           "float", $iWidth1, "float", $iHeight1)
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth12, _
                           "float", $fPosY, _
                           "float", $iWidth1, "float", $iHeight1)
    _GDIPlus_GraphicsResetTransform($hGfx)

    ;min
    If $fMin_next <> @MIN Then $bBounce = 1
    Switch $bBounce
        Case 1
            $fMin = (6 * Mod(($fMin_next + 1), 60)) + Sin($f * 1.9) * $fAmplitude
            If $fAmplitude = 0 Then
                $fMin_next = @MIN
                $f = 0
                $fAmplitude = 3
                $bBounce = 0
            Else
                $fAmplitude -= 0.5
                $fAmplitude = $fAmplitude <= 0 ? 0 : $fAmplitude
                $f += 1
            EndIf
        Case Else
            $fMin = (6 * @MIN)
    EndSwitch
    _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
    _GDIPlus_GraphicsRotateTransform($hGfx, $fMin)
    _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)
    $iWidth1 = $fDiameter * 0.03
    $iHeight1 = $fRadius
    $iWidth12 = $iWidth1 / 2
    $fPosY = $fDiameter * 0.1
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Shadow, _
                           "float", $fRadius - $iWidth12 + Cos(($fShadowAngle - $fMin) * $fRad) * $m1, _
                           "float", $fPosY + Sin(($fShadowAngle - $fMin) * $fRad) * $m1, _
                           "float", $iWidth1, "float", $iHeight1)
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth12, _
                           "float", $fPosY, _
                           "float", $iWidth1, "float", $iHeight1)
    _GDIPlus_GraphicsResetTransform($hGfx)

    ;sec
    $fSec = 6 * (@SEC * 1.02564 + @MSEC / 1000)
    If $fSec >= 360 Then $fSec = 0
    _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
    _GDIPlus_GraphicsRotateTransform($hGfx, $fSec)
    _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)
    $fPosY = $fDiameter * 0.27
    $fPosY2 = $fDiameter * 0.19
    $iWidth1 = $fDiameter * 0.0095
    $iHeight1 = $fRadius * 1.3 - $fPosY
    $iWidth12 = $iWidth1 / 2
    $iWidth2 = $fDiameter * 0.083333
    $iWidth22 = $iWidth2 / 2


    ;shadow seconds
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Shadow, _
                           "float", $fRadius + Cos(($fShadowAngle - $fSec) * $fRad) * $m1, _
                           "float", $fPosY + Sin(($fShadowAngle - $fSec) * $fRad) * $m1, _
                           "float", $iWidth1 + $fDiameter * 0.006667, "float", $iHeight1 + $fDiameter * 0.006667)
    DllCall($__g_hGDIPDll, "int", "GdipFillEllipse", "handle", $hGfx, "handle", $hBrush_Shadow, _
                           "float", $fRadius - $iWidth22 + Cos(($fShadowAngle - $fSec) * $fRad) * $m1, _
                           "float", $fPosY2 + Sin(($fShadowAngle - $fSec) * $fRad) * $m1, _
                           "float", $iWidth2, "float", $iWidth2)
    ;seconds
    _GDIPlus_BrushSetSolidColor($hBrush_Update, 0xFFC01010)
    DllCall($__g_hGDIPDll, "int", "GdipFillRectangle", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth12, _
                           "float", $fPosY, _
                           "float", $iWidth1, "float", $iHeight1)
    DllCall($__g_hGDIPDll, "int", "GdipFillEllipse", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth22, _
                           "float", $fPosY2, _
                           "float", $iWidth2, "float", $iWidth2)
    _GDIPlus_GraphicsResetTransform($hGfx)

    ;button in the center
    DllCall($__g_hGDIPDll, "int", "GdipFillEllipse", "handle", $hGfx, "handle", $hBrush_Update, _
                           "float", $fRadius - $iWidth1, _
                           "float", $fRadius - $iWidth1, _
                           "float", 2 * $iWidth1, "float", 2 * $iWidth1)
    DllCall($__g_hGDIPDll, "int", "GdipDrawEllipse", "handle", $hGfx, "handle", $hPen_Update, _
                           "float", $fRadius - $iWidth1, _
                           "float", $fRadius - $iWidth1, _
                           "float", 2 * $iWidth1, "float", 2 * $iWidth1)
EndFunc

Func GenerateClockBg($fDiameter)
    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($fDiameter + $fDeltaShadow, $fDiameter + $fDeltaShadow), $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap), _
                $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000), $fBorderSize = $fDiameter * 0.03333, _
                $hEffect = _GDIPlus_EffectCreateBlur($fDiameter / 50, 0), $hPen = _GDIPlus_PenCreate(0xA0000000, $fBorderSize)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx, 4)
    _GDIPlus_GraphicsSetPixelOffsetMode($hGfx, 4)
    _GDIPlus_GraphicsSetTextRenderingHint($hGfx, 4)
    _GDIPlus_GraphicsClear($hGfx, 0xFFFFFFFF)
    Local Const $fSize = $fDiameter * 0.95 - $fBorderSize / 2
    Local $fShadow_vx = $fDiameter * 0.0095, $fShadow_vy = $fDiameter * 0.01
    $fShadowAngle = ATan($fShadow_vy / $fShadow_vx) * $fDeg
    If $fShadow_vx < 0 And $fShadow_vy >= 0 Then $fShadowAngle += 180
    If $fShadow_vx < 0 And $fShadow_vy < 0 Then $fShadowAngle -= 180
    _GDIPlus_GraphicsDrawEllipse($hGfx, $fBorderSize + $fShadow_vx, $fBorderSize + $fShadow_vy, $fSize, $fSize, $hPen)
    _GDIPlus_BitmapApplyEffect($hBitmap, $hEffect)

    _GDIPlus_PenSetColor($hPen, 0xF0000000)
    Local Const $hBitmap_Texture = _CreateBrushedAluminum($fDiameter, $fDiameter, $fShadowAngle)
    Local Const $hTexture = _GDIPlus_TextureCreate($hBitmap_Texture)
    DllCall($__g_hGDIPDll, "int", "GdipSetPenBrushFill", "ptr", $hPen, "ptr", $hTexture)
    _GDIPlus_GraphicsDrawEllipse($hGfx, $fBorderSize, $fBorderSize, $fSize, $fSize, $hPen)

    _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
    _GDIPlus_GraphicsRotateTransform($hGfx, -6)
    _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)

    Local $iWidth1 = $fDiameter * 0.026667, $iHeight1 = $fDiameter / 10, $iWidth12 = $iWidth1 / 2, $fPosY = $fDiameter * 0.083333, _
          $iWidth2 = $fDiameter * 0.013333, $iHeight2 = $fDiameter * 0.0416667, $iWidth22 = $iWidth2 / 2
    For $i = 0 to 59
        _GDIPlus_GraphicsTranslateTransform($hGfx, $fRadius, $fRadius)
        _GDIPlus_GraphicsRotateTransform($hGfx, 6)
        _GDIPlus_GraphicsTranslateTransform($hGfx, -$fRadius, -$fRadius)
        Switch Mod($i, 5)
            Case 0
                _GDIPlus_GraphicsFillRect($hGfx, $fRadius - $iWidth12, $fPosY, $iWidth1, $iHeight1, $hBrush)
            Case Else
                _GDIPlus_GraphicsFillRect($hGfx, $fRadius - $iWidth22, $fPosY, $iWidth2, $iHeight2, $hBrush)
        EndSwitch
    Next
    _GDIPlus_GraphicsResetTransform($hGfx)

    Local Const $hBitmap_Logo = _GDIPlus_BitmapCreateFromMemory(_Au3_Icon())
    Local Const $hBitmap_Logo_Scaled = _GDIPlus_ImageResize($hBitmap_Logo, $fDiameter * 0.08, $fDiameter * 0.08)
    Local $aDim = _GDIPlus_ImageGetDimension($hBitmap_Logo_Scaled)
    _GDIPlus_GraphicsDrawImageRect($hGfx, $hBitmap_Logo_Scaled, $fRadius - $aDim[0] / 2, $fRadius / 1.75, $aDim[0], $aDim[1])
    _GDIPlus_ImageDispose($hBitmap_Logo)
    _GDIPlus_ImageDispose($hBitmap_Logo_Scaled)

    Local Const $hFamily = _GDIPlus_FontFamilyCreate("Segoe Script"), $hFont = _GDIPlus_FontCreate($hFamily, $fDiameter * 0.025), $hFormat = _GDIPlus_StringFormatCreate()
    _GDIPlus_StringFormatSetAlign($hFormat, 1)
    _GDIPlus_StringFormatSetLineAlign($hFormat, 1)
;~  _GDIPlus_BrushSetSolidColor($hBrush, 0xFF400000)
    _GDIPlus_GraphicsDrawStringEx($hGfx, "Clock by" & @CRLF & "MLK", $hFont, _GDIPlus_RectFCreate($fRadius - $fRadius * 0.2, $fRadius + $fRadius * 0.2, $fRadius * 0.4, $fRadius * 0.4), $hFormat, $hBrush)

    _GDIPlus_ImageDispose($hBitmap_Texture)
    _GDIPlus_BrushDispose($hTexture)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_EffectDispose($hEffect)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGfx)
    Return $hBitmap
EndFunc

Func _CreateBrushedAluminum($iW, $iH, $fLightAngle = 40, $iBlurDist = 12, $fBlurTrans = 0.6666, $fRed = 0.8, $fGreen = 0.9, $fBlue = 1, $iLightColor = 0xF0FFFFFF, $fLightSigma = 0.5, $fLightScale = 0.83) ;coded by Eukalyptus!
    $iBlurDist = Ceiling($iBlurDist)
    $iBlurDist += 1 - Mod($iBlurDist, 2)

    Local $iOverSize = 0
    For $i = 1 To $iBlurDist Step 2
        $iOverSize += $i + $i + 1
    Next

    Local $iWO = $iW + $iOverSize

    ;=========================================
    ; Add Noise
    ;=========================================

    Local $iNoiseSize = 40

    Local $hBmp_Noise = _GDIPlus_BitmapCreateFromScan0($iNoiseSize, $iNoiseSize)
    Local $hGfx_Noise = _GDIPlus_ImageGetGraphicsContext($hBmp_Noise)

    Local $tData = _GDIPlus_BitmapLockBits($hBmp_Noise, 0, 0, $iNoiseSize, $iNoiseSize, BitOR($GDIP_ILMREAD, $GDIP_ILMWRITE), $GDIP_PXF32ARGB)
    Local $iStride = DllStructGetData($tData, "Stride")
    Local $iWidth = DllStructGetData($tData, "Width")
    Local $iHeight = DllStructGetData($tData, "Height")
    Local $pScan0 = DllStructGetData($tData, "Scan0")
    Local $tPixel = DllStructCreate("dword[" & $iWidth * $iHeight & "];", $pScan0)

    Local $iAmp
    For $row = 0 To $iHeight - 1
        For $col = 0 To $iWidth - 1
            $iAmp = Random(0, 0xFF, 1)
            DllStructSetData($tPixel, 1, BitOR(0xFF000000, BitShift($iAmp, -16), BitShift($iAmp, -8), $iAmp), $row * $iWidth + $col + 1)
        Next
    Next

    _GDIPlus_BitmapUnlockBits($hBmp_Noise, $tData)


    ;=========================================
    ; Create Full NoiseBitmap
    ;=========================================

    Local $hBmp_Full = _GDIPlus_BitmapCreateFromScan0($iWO, $iH)
    Local $hGfx_Full = _GDIPlus_ImageGetGraphicsContext($hBmp_Full)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Full, 4)
    _GDIPlus_GraphicsSetInterpolationMode($hGfx_Full, 3)

    Local $iXOff, $iYOff, $iSizeX, $iSizeY
    For $y = 0 To $iH Step $iNoiseSize / 2
        For $x = 0 To $iWO Step $iNoiseSize / 2
            $iXOff = Random(0, $iNoiseSize / 2, 1)
            $iYOff = Random(0, $iNoiseSize / 2, 1)
            $iSizeX = $iNoiseSize - $iXOff
            $iSizeY = $iNoiseSize - $iYOff
            _GDIPlus_GraphicsDrawImageRectRect($hGfx_Full, $hBmp_Noise, $iXOff, $iYOff, $iSizeX, $iSizeY, $x, $y, $iSizeX, $iSizeY)
        Next
    Next

    _GDIPlus_GraphicsDispose($hGfx_Noise)
    _GDIPlus_BitmapDispose($hBmp_Noise)



    ;=========================================
    ; MotionBlur
    ;=========================================
    Local $hBmp_Full2 = _GDIPlus_BitmapCreateFromScan0($iWO, $iH)
    Local $hGfx_Full2 = _GDIPlus_ImageGetGraphicsContext($hBmp_Full2)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Full2, 4)
    _GDIPlus_GraphicsSetInterpolationMode($hGfx_Full, 3)

    Local $tColorMatrix = DllStructCreate("float[5]; float[5]; float[5]; float[5]; float[5];")
    DllStructSetData($tColorMatrix, 1, 1, 1)
    DllStructSetData($tColorMatrix, 2, 1, 2)
    DllStructSetData($tColorMatrix, 3, 1, 3)
    DllStructSetData($tColorMatrix, 4, $fBlurTrans, 4)
    DllStructSetData($tColorMatrix, 5, 1, 5)

    Local $hImgAttrib = _GDIPlus_ImageAttributesCreate()
    DllCall($__g_hGDIPDll, "int", "GdipSetImageAttributesColorMatrix", "ptr", $hImgAttrib, "int", 1, "int", 1, "struct*", $tColorMatrix, "struct*", 0, "int", 0)
    For $i = 1 To $iBlurDist Step 2
        DllCall($__g_hGDIPDll, "int", "GdipDrawImageRectRect", "ptr", $hGfx_Full2, "ptr", $hBmp_Full, _
                               "float", $i, "float", 0, "float", $iWO, "float", $iH, _
                               "float", 0, "float", 0, "float", $iWO, "float", $iH, _
                               "int", 2, "ptr", $hImgAttrib, "ptr", 0, "ptr", 0)
        If $i >= $iBlurDist Then
            DllStructSetData($tColorMatrix, 1, $fRed, 1)
            DllStructSetData($tColorMatrix, 2, $fGreen, 2)
            DllStructSetData($tColorMatrix, 3, $fBlue, 3)
            DllStructSetData($tColorMatrix, 4, 1, 4)
            DllCall($__g_hGDIPDll, "int", "GdipSetImageAttributesColorMatrix", "ptr", $hImgAttrib, "int", 1, "int", 1, "struct*", $tColorMatrix, "struct*", 0, "int", 0)
        EndIf
        DllCall($__g_hGDIPDll, "int", "GdipDrawImageRectRect", "ptr", $hGfx_Full, "ptr", $hBmp_Full2, _
                               "float", $i + 1, "float", 0, "float", $iWO, "float", $iH, _
                               "float", 0, "float", 0, "float", $iWO, "float", $iH, _
                               "int", 2, "ptr", $hImgAttrib, "ptr", 0, "ptr", 0)
    Next
    _GDIPlus_ImageAttributesDispose($hImgAttrib)

    _GDIPlus_GraphicsDispose($hGfx_Full2)
    _GDIPlus_BitmapDispose($hBmp_Full2)
    _GDIPlus_GraphicsDispose($hGfx_Full)

    ;=========================================
    ; Add Light
    ;=========================================

    Local $hBmp_Alu = _GDIPlus_BitmapCreateFromScan0($iW, $iH)
    Local $hGfx_Alu = _GDIPlus_ImageGetGraphicsContext($hBmp_Alu)
    _GDIPlus_GraphicsSetSmoothingMode($hGfx_Alu, 4)
    _GDIPlus_GraphicsSetInterpolationMode($hGfx_Full, 3)

    _GDIPlus_GraphicsDrawImage($hGfx_Alu, $hBmp_Full, -$iOverSize, 0)
    _GDIPlus_BitmapDispose($hBmp_Full)

    Local $tPointF1 = DllStructCreate("float; float;")
    Local $tPointF2 = DllStructCreate("float; float;")
    DllStructSetData($tPointF2, 2, $iH * $fLightScale)

    $aResult =   DllCall($__g_hGDIPDll, "int", "GdipCreateLineBrush", "struct*", $tPointF1, "struct*", $tPointF2, "uint", 0, "uint", $iLightColor, "int", 0, "handle*", 0)
    If @error Or Not IsArray($aResult) Then Return SetError(1, 4, False)
    Local $hBrush = $aResult[6]

    _GDIPlus_LineBrushSetSigmaBlend($hBrush, $fLightSigma)
    _GDIPlus_LineBrushSetGammaCorrection($hBrush)
    DllCall($__g_hGDIPDll, "int", "GdipRotateLineTransform", "ptr", $hBrush, "float", $fLightAngle, "int", 0)

    _GDIPlus_GraphicsFillRect($hGfx_Alu, 0, 0, $iW, $iH, $hBrush)

    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_GraphicsDispose($hGfx_Alu)

    Return $hBmp_Alu
EndFunc   ;==>_CreateBrushedAluminum


;Code below was generated by: 'File to Base64 String' Code Generator v1.20 Build 2018-02-02

Func _Au3_Icon($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $Au3_Icon
    $Au3_Icon &= 'iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAP0ElEQVR4XtWZW4hs6VXHf+v79qWquruquqtvZ/r0uc8540yScTIQQ0JkDOYyGhIkhhAxxhdR8mDAgAg+6FsE9UVffNMH8S0ERAwS1DFeEo3m6owzmUySc+Zc+15VXZd9+dZyp6ro4pDTORlGIfnDn703TW/+//X9v/Wt3i3PPfccP85w/GhBgLqkS23ixhpRfau6bgItIPpRN5Ag0Xl88jYrxu/E+KA492E0vJd44d245BKQ/H8bkAe80wMOEE5HA5c8SpQ822yv/ubW9vnfffyxR3+vs7r6YcS9HewZnP9ZXPwE0Py/NuCBJj65iERvQPybcNFP4JKzuPgq+CeR6GnwV3FJB4juM+mSNj55Ehe97/LFC5947PL2ey5tb755daW1+fiVc295+qk3fuTShfPPPnb10d+J60sfI6o9BbRer4EIaOLis1Nh6dtBfs6ljY82ljqfiNLFX8X597uk/ksrG4/8ftJo/lq62P51XPQOJHoc3DV8egZYxLkLcW3xQ088fvWTj2ysXItjnxRlGY6Ojmxvb98iJwtnz6xeXO80tx+9tP0Rcf6tuHhzLuS1YwmJLiHuslRVbzQbjydJsrXSbl4RIVlpLZ0xM71+e+cbC41a+8zayuVxlo9CCPnX/vslt7S89iEzy4/7R/+MT7+Lhq2V5dbbO63Ftbwog/feDYdDt7e3R71eo9vt2tbWlkZRRC1NFkHWQDpACmQ/bBuVWUyaiN+Kk9oH2q3mO/Ky0HNn1p9sNxeaBpiBmpl3TlTNqouoqkmFoKp5XuT1NKlVFS5ffOXm54ui2EFIr17afudCLV1SM5mBity+fRuAzc1NVC1EkfN3dg+/9e1vf/ePMfssYXz9hzXQJKo/BTyKlovrZ7Y+fPXi1luryubOOeKqPBpKQiilLAMhBAwEw7x3RN9jFImPIhTR8TjPQghFvZY2s7wYpkmc'
    $Au3_Icon &= 'Ag5ARFBVuXHjBpVPqurTaDRMVRERQgjll776wp9YKP+KMP5a9NCsS7SBuHMgb2stt9+13FraXltubYegmkRRMh4POTwccdAbMy4CQTFDBBEDABMvYmnirNVIaC3UpVFP667WqFdmrRLfYA7MDIBWq0WaplQRIo5j8d6bVvDOxbV6fXV03C0BeYgBvyxx7R1prfbs2srym8+e6bxhtrwMjnt276Bv3UGOuYQ4bVCrJ1JVWtxEvxO0xBHIiiBVpbnbLexetysLidjmygKLCwsYzjATwACpQK/XY2VlBTNjZ2cHVTXvvYkgg3F2lI2z2+ByIEScjgRx23GSPvPU41d+BQE1zMqCnb197h2NxCeLttBeliiOmCUGDIIJFgIbzYh2IyUoqBrHo0LuHQ4ozMl37g1sqTaUrdWWJbW6haAChnOOPM/Z3d1lNBpRVX/CEJTIOxkOs2Mt8z4iAHa6ARdvVnzL+a3NnzfMVNEyz/z1Wzt2XHgWW+tUwkUV8tKYlQ81IZLA9nJMI40IaohAFAnLSxHeSm7sDWi0VuR4cMxLN/fl0maLxsICqlRUVldXOTg4IEkSOp2OVUAE1Iz+YLSHyAAYndZGE1yyAXqt1Wq/b3Vl6WxQC/lo4F5+dccK15Dmchs1yEpAHCAwEe+IKbm8GhN5T6mKEwGmwgAWFxdYHo7Y6fdoLDUZDz0vvnrI1S1lYXEJnRmuhANYBalozolT1dDt97+Chq+j+f6DDUh0Bh8/k9br7754buOng5oW2ci9fGNHxtRoLrbIgwEecw5sasAQRAPnVx3eC0UIE/FmxhxgwMZqm1G+T/d4SL3eoAzKizcPefycUG8soqqEEAxMzFARIcvL8fWbO18YH/c+DfICcPwgA4JZa2lp6b3XLp39kK8QQtBbd/ZlUIgttJakNFA8OIeZQ5hVPyhnm0Y9dpTBEMDMeBBMPGc6i/RvdRnnCVWTIMvHfPPWEU+c97iohpmad47jcda/u3Pw/MHh'
    $Au3_Icon &= '0b+Zll8GfREtd08bJSJ81DgeDO6WQYOBHh3uy04/M5c0RCaxEBSHmsNMUKBUo5Uo6w0hVwEzToOZQcW01uCR5ZQym2zqSRcbZyW39gdgATPEgLu7hy/v7+3+jWn5GUz/Hi1vAPagUaKGS65geqndbD2ZJnE8Hh3bzb0BuFgkignq0FnmMWaCIHElFzuO0jwOQ+bR+YFGaomHMJyumIvAp1RdirVmnaRWMxGcqwi2i9mrhGyHOe43gEQrLq698+wj6x9f77SvWYVefyjjgOBjwKMiGG4uXsBZydU1jyGoKhpK8iLHe08cJ4gID4aAAhZQA8GBj7Gi4Ob+gMuPREBCGUKJWQNYBASw08bpBbDVtZXWNQPLs6FVvV6QyHAROmuRChigCGjg0rIjdTqpYlHk3L5zl2rO4Tu39iZmDDCzCZnfT4gTmL8PnAMXczTIyPOAqlk1JJ73Sf2NOH9pZoIHGYiApXqjcQVMMXQ8GssoV8NFgngMhyLA1IgLGRfa0K4beZCJ2J3dXfa7Q6I4pV9E3D0YYmV2f/7n90RRTC1yWChQExAPPsJUORzkTjVYNaVuXLm0/UHEXcDXaqcZSBBZi6NoAwRMGWUlhkzE4zwgqBoGYIGzLWG1rmQlOIHjfo+j45z11RUKE6ivcHsYca+bI9j0d21OMMR5Uq9okaEA4k5YGTBMKVV1MBwfYhpVbJy+AuKaYJEZqAbpjQoQx5yCMTspG8ZG05Opm4kL9IYZucJOd0AZL4G4yQgQxTXAMO6PkAF5NqY/KjAXA8LcgGecl6JBEcH1+sd3QFpA68EGosbC7IfxNNqlZaWdCAem92Y0IuXiMuQB5EQUdNotttY7bK52OL+6yLWO8pObsLboCMr3nws2NZAFAZ8whZwY0aAoAoY16rVVIIAVD+5CpklVqcvVmHwFM1TVBTU5GRNwiBnLDcfVjpIHB6bMAbVaQqNeQ8RQVcBRmCGnHWYYWZ5jEoGraDoTP6WpEYKK91YV'
    $Au3_Icon &= 'pX1ld+/Ah6zonxYhFCsXGumqqk2fDDspCkanIVxbKRkHh6l+X09XNcoQKEolmKAnwgUDzO7fyKZKVgTwMYh7gEFsQtNw697BC6HIR4ic0oUEESQKqkFEHCYmjpMe5zAudCLGFoHp97dDQEQwZmbKchqPYZ9B/4DxoIdqeSJezQhlwTAvwaecQDiBiMwe8cvtxS0fpxfAWoB7QIQoQlm8/NIrNz9z7fLZ94vzSeycZaWJYDzxSB1MmW2q+0TrieAReZ6RF4FRHhgXSqEQJkl0PLadkiR+ZkIIoWCUGdRjmB/rJxQRvBfMQIwESEGSmQG930AY7+HS5/N8fCXPy6KeuiSNnR2Pc1mqJ5ONOywU78BsLjwfjRj0e5NO0s+UIH5aUV+HKJlm21fUkkwhwVAzBCiLgmCAiwG7n6b4yIub6VcsA7uO6Q4QHjRKFGg5rObzs/VasmiqZZr4qJrd7bGtBcnyAifzHIeg9LoH7B70GWoEyRIsLEzFu1nnMuaVRRjmBUupYgrihLIsURyIZ155nVIDjSRR50Sq9tx7+ZXrf46Gf8TKm4CdMguJz4uil+fFKIp80lxo2NZ6g+oZVQXmq9w9OuDmzhFaW4HFzrTSGNicU9hJsPMAmAIOwyjLAM7PzOr9xGgvpZhBvz/aE/HerMiA0WldSIGeqXZFJC6Dulq9ThmChBAwM0wVMxgOj7m730NrHVhYB+fAwikjtIAACGqAKjp7V1AD8QD3VZ5Q4H1kywux5EXQ732Ra7eab0I1AO40AyCupxpe2T/qf9P7yMTUiqKwk9YnMhnWDg+PyKUOjc682gg/EMJ8jzKFqoG4k8xjYUot6LQagikGriyDdnv9zyNyBJSnG9C8b0X2D3mpN9MkcveJB1SV7tE+B4MwFY8ADxEv833pBEwAM8bjMaNxBshcvJYQcpyPbKtTpyjNIufk7l73q1qMvoiVuwCnGRAgixvNKxe21t+VZVlpZq6izA4pBsd9dg5HkDZn'
    $Au3_Icon &= 'J2eYb9RTMPdn1GLBcJhN33WUCcQNCMWEUwMF2+st0RCsAkf94W7/ePAVzO4Ag1MNzNDcPrP+B2aBEALARLzBJDp7B10CHnwCIQct59l/iAlBaUSgBoJRBp2KdxHo7F3FiFaraZ0Fb3kRDCyr/pz8pyIbfRa4B+hpBhLAti9cfmahnjyd53kBRFYBwFSt1+vZOC8hSkHnFZsygCmg87zcvwSIMR2bDcyUrFSAaSFCCeWIWr1hV9YbMspKjSPnrt/e/fdsNPg7TL9xWnyYn2qkYL/ovVPVWVLNBGA4HNLrDzmz1rbVVsMIGRVtugoFWDE3MjMzp4HmRGSIQBXNybfOLC/BbGqgGFq93uCJc21GeaFR5P0oK3pl0Bugz6P57R+U0wgoN7fO/8Zyq/nRooJhEYZUsLIsqDqA1Bs1lpotW9IgiXfcORqJlSNwCfgIxE84H78FYHofCupRCfjJp8K9wz4BD24SQVtpt+XiRsOqTY2A6/aGt1+9c+8vLBSfI4RXgIzTQQSki43axzHVEILI/Eua9fsDd9TtXd/c2Iy9d49kQfP2YhotNWJ5dW/EMJusguBicBMTcwPCFKqYQCgDg1FGXhqIWpQmnD/Tpplig9EYAesNsnu37tz7S9Pw14Tsf4AeD0F0/tLlReekphoEEDAB0SzL5ODoqI/qn+0e9ZezUp9dbjbOJ/W0aRAurNUlK+vubndsw6zAilwQARy4+SqIlZShIGt2LIQgca1h651l1tt1iqKQ42EIceTdzn7v+b39/U+L889j4VtT8Q+HfOUbL3zq7Ob6J800VlWbfR3W3b193z06/EPEfwoXP+ai+BdWO+0PFEXIq/3wBjAwVGazd29U0q+YFYGghjFF7KDmApVGGQ2PbWOtI1WzIC8Vg1Bp94fdwau37+78KdhzaHgFLbpA4OEgwmzNmPR8RCZDVuj2elG3e/S5NIn/KMuLQyR+Ucv80zs7ey+BbVVinIjUVpcXL816O82613Zd'
    $Au3_Icon &= 'gMTEOQcCqIo4RlkpVRu2Uk129w8DneWxeO9v3N79l+pCnuVfxvRfCdkLwIDXAPnSf33tU+fOnvktEXNFUUi1af3e3sHXNRQfA746P0+p4eJlxJ9D5I3OR09fPnfml6vD5m6rubCdRC4FAUDNdDTOe977ej2NUjOjdzxgNBwVh73h3/ooGXrvk2w8esE0PI9Nus11oM9rhHzhi//xtpXV1c+msW92uz0ODw6fA/1t4Es8GDEu3kDcFRclP6Ua2nGcbMdxvI4hzossLdQvAeRFeS/Liv00jddUtej2Bs9pKP4TDYdgOdBD3C4h2wcCrx1M/8kn7j2Y/gxwM03Tz2RZdouHo4GLOuA2EGliNBGpY3qM8+uAoeV3MBvjXBucTJ5dfIcwGgIGlIDxOjAx8DrhgQioEdUjxCmmEQDlaDATGTPF+JRKv24Dbp71GX9M8L84Jo46QVTs6gAAAABJRU5ErkJggg=='
    Local $bString = _WinAPI_Base64Decode($Au3_Icon)
    If @error Then Return SetError(1, 0, 0)
    $bString = Binary($bString)
    If $bSaveBinary Then
        Local Const $hFile = FileOpen($sSavePath & "\au3-icon2.png", 18)
        If @error Then Return SetError(2, 0, $bString)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return $bString
EndFunc   ;==>_Au3_Icon

Func _WinAPI_Base64Decode($sB64String)
    Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "")
    Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]")
    $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0)
    If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "")
    Return DllStructGetData($bBuffer, 1)
EndFunc   ;==>_WinAPI_Base64Decode
code này về cho chạy như thế nào vậy? mình bên Hóa nên ko biết lấy code về rồi cho chạy. bên cạnh đó mình muốn thay đổi các con số trên đồng hồ thành ký tự Hóa Học được ko? Như 1 = CH4, 2 = C2H6...12 = C12H26 đó.:3
 


Top