Jump to content

Simple Circular ProgressBar with smooth edges & gradient color


Go to solution Solved by UEZ,

Recommended Posts

Posted (edited)

Dear Experts,

I need to create : Simple Circular ProgressBar with smooth edges & gradient color in Autoit

showing circular progressbar, percentage , smooth clear edges and with gradient color

Thanks in advance

just like this image :

 

SimpleCircularProgressBar.png

Edited by Davidyese
Posted

Why do you need it in AutoIt @Davidyese? Should this progressbar be integrated in a AutoIt GUI or do you only want to have this as single progressbar before your applocation is fully loaded etc.? I'm trying to understand whether there are other options that might be easier to implement.

I am sure @UEZ or other people here could provide such things, but who knows... how about your tryouts so far?

Best regards
Sven

==> AutoIt related: 🔗 GitHub, 🔗 Discord Server, 🔗 Cheat Sheet

Spoiler

🌍 Au3Forums

🎲 AutoIt (en) Cheat Sheet

📊 AutoIt limits/defaults

💎 Code Katas: [...] (comming soon)

🎭 Collection of GitHub users with AutoIt projects

🐞 False-Positives

🔮 Me on GitHub

💬 Opinion about new forum sub category

📑 UDF wiki list

✂ VSCode-AutoItSnippets

📑 WebDriver FAQs

👨‍🏫 WebDriver Tutorial (coming soon)

Posted (edited)
3 minutes ago, SOLVE-SMART said:

Why do you need it in AutoIt @Davidyese? Should this progressbar be integrated in a AutoIt GUI or do you only want to have this as single progressbar before your applocation is fully loaded etc.? I'm trying to understand whether there are other options that might be easier to implement.

I am sure @UEZ or other people here could provide such things, but who knows... how about your tryouts so far?

Best regards
Sven

I want to use it to show actual progressbar during file download from internet

cause i made a gui to download some files and i want this beautiful shape

Edited by Davidyese
Posted (edited)

Thanks for your help UEZ

Great work and i have this code long time ago

but i ask if you can match the picture and modifying the script please

here is your excellent code (please adjust to match the picture in my 1st post)

I dont't know to modify the colors in this code

 

;AutoIt v3.3.9.21 or higher needed!
;coded by UEZ build 2013-10-13
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

_GDIPlus_Startup()
Global Const $STM_SETIMAGE = 0x0172
Global Const $iW = 300, $iH = 300
Global Const $hGUI = GUICreate("GDI+ Ring Progressbar", $iW, $iH, -1, -1, $WS_POPUPWINDOW, $WS_EX_TOPMOST)
GUISetBkColor(0)
Global Const $iPic = GUICtrlCreatePic("", 0, 0, $iW, $iH)
;~ GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()

Global $hHBmp_BG, $hB, $fPerc, $iSleep = 60
GUIRegisterMsg($WM_TIMER, "PlayAnim")
DllCall("user32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iSleep, "int", 0)

Do
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            GUIRegisterMsg($WM_TIMER, "")
            _WinAPI_DeleteObject($hHBmp_BG)
            _GDIPlus_Shutdown()
            GUIDelete()
            Exit
    EndSwitch
Until False

Func PlayAnim()
    $hHBmp_BG = _GDIPlus_RingProgressbar($fPerc)
    $hB = GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBmp_BG)
    If $hB Then _WinAPI_DeleteObject($hB)
    _WinAPI_DeleteObject($hHBmp_BG)
    $fPerc += 0.33333
    If $fPerc > 100 Then $fPerc = 0
EndFunc   ;==>PlayAnim

Func _GDIPlus_RingProgressbar($fPerc, $iSize = 300, $sText = "Please wait...")
    Local Const $hBmp = _GDIPlus_BitmapCreateFromMemory(_Background_Texture())
    Local Const $hTexture = _GDIPlus_TextureCreate($hBmp)
    _GDIPlus_BitmapDispose($hBmp)
    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iSize, $iSize)
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetPixelOffsetMode($hCtxt, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)
    _GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
    _GDIPlus_GraphicsFillRect($hCtxt, 0, 0, $iSize, $iSize, $hTexture)

    If $fPerc < 0 Then $fPerc = 0
    If $fPerc > 100 Then $fPerc = 100
    Local Const $hPath = _GDIPlus_PathCreate(), $hPath2 = _GDIPlus_PathCreate(), _
                $fRadius = $iSize / 1.5, $iX = ($iSize - $fRadius) / 2, $iY = ($iSize - $fRadius) / 2, _
                $fDX = $iSize / 10, $fAngel = $fPerc * 360 / 100, $fSize = $iSize / 5

    _GDIPlus_PathAddEllipse($hPath, $iX, $fDX + $iY, $fRadius, $fRadius)

    Local $aBlend[4][2] = [[3]]
    $aBlend[1][0] = 0x80A00000
    $aBlend[1][1] = 0 ;position = boundary
    $aBlend[2][0] = 0xD8FF0000
    $aBlend[2][1] = 0.15 ;distance boundary->center point
    $aBlend[3][0] = 0x04A00000
    $aBlend[3][1] = 1 ;center point

    Local Const $hBrush = _GDIPlus_PathBrushCreateFromPath($hPath)
    _GDIPlus_PathBrushSetPresetBlend($hBrush, $aBlend)
    Local Const $hPen = _GDIPlus_PenCreate2($hBrush, $fSize)
    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen)

    _GDIPlus_PathReset($hPath)

    Local Const $hPen2 = _GDIPlus_PenCreate2($hTexture, $fSize + 4)
    _GDIPlus_PathAddArc($hPath, $iX, $fDX + $iY, $fRadius, $fRadius, -90, $fAngel)
    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen2)


    $aBlend[1][0] = 0x20FFFFFF
    $aBlend[1][1] = 0 ;position = boundary
    $aBlend[2][0] = 0x50FFFFFF
    $aBlend[2][1] = 0.15 ;distance boundary->center point
    $aBlend[3][0] = 0x20FFFFFF
    $aBlend[3][1] = 1 ;center point
    _GDIPlus_PathBrushSetPresetBlend($hBrush, $aBlend)


    Local Const $hPen3 = _GDIPlus_PenCreate2($hBrush, $fSize)
    _GDIPlus_PathAddArc($hPath2, $iX, $fDX + $iY, $fRadius, $fRadius, -90, $fAngel)
    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath2, $hPen3)

    _GDIPlus_PathReset($hPath)
    Local Const $hFamily = _GDIPlus_FontFamilyCreate("Verdana")
    Local Const $hFormat = _GDIPlus_StringFormatCreate()
    Local Const $tLayout = _GDIPlus_RectFCreate(0, $iSize / 12, $iSize, 0)
    Local Const $tLayout2 = _GDIPlus_RectFCreate(0, ($iSize + $iSize / 18) / 2, $iSize, 0)
    _GDIPlus_StringFormatSetAlign($hFormat, 1)

    Local Const $hBrush2 = _GDIPlus_BrushCreateSolid(0xE0FFFFFF)
    _GDIPlus_PenSetColor($hPen, 0x80000000)
    _GDIPlus_PenSetWidth($hPen, 4)
    _GDIPlus_PathAddString($hPath, $sText, $tLayout, $hFamily, 0, $iSize / 12, $hFormat)
    _GDIPlus_PathAddString($hPath, StringFormat("%02d%", $fPerc), $tLayout2, $hFamily, 0, $iSize / 9, $hFormat)

    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen)
    _GDIPlus_GraphicsFillPath($hCtxt, $hPath, $hBrush2)

    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_PenDispose($hPen2)
    _GDIPlus_PenDispose($hPen3)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_BrushDispose($hBrush2)
    _GDIPlus_BrushDispose($hTexture)
    _GDIPlus_PathDispose($hPath)
    _GDIPlus_PathDispose($hPath2)
    _GDIPlus_GraphicsDispose($hCtxt)

    Local Const $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    Return $hHBmp
EndFunc

;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-05-17

Func _Background_Texture($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $Background_Texture
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= 'LDtyT0/mXl/5NOLjdHdfuZrUd46l0feIgZuiLJ89Qb51eMRqmGGruU5O9yhvUKrEpXe63MNc5bmK037iLdxC+dvMA8yir0Mo4v7l2l8icq5RyzfLAUVy7lXdNoHR3FLbHcTJj8xC+YOdfn+pyYf98QbtraVYVydwr52wOzANnUwsKh48QC8GMo9H+4lHwf7iDN8DnxKVMZEt2lr0/UpvT9SsUvXEprN66lZcOonQ/UD1x15mJ95ue7fUVW3wTTznxMlls49wnfjNTFb4Sr3Xcep2fuBaBecTqu5tQcssFX+Iq+94lafklLtV9TkZs8QqlXvVQz23yQPJMwdYuIplY3yd6iW4WJStWZay1+pVZvHqBhWMv6iZ5q4VWenmNGm/XqGRd7ceIE4zviU8moJZX8zbnT+CYsPGczQwUYOeY88/5l1M3p0Rb1cMmBgdGY7b3UwMXPC4c7C55t2cSlv4JR33EKp317hYr0lH3EtyOWX4/ECnszBo14l28My8Smhy5mHkSoZCu5Xl+5k/NxS/LzGqMc4zMXj+YUtMRWLvUKcL28+o4ZvcWM6Gs/1FpSOtXCrOxz49Rl86efEoOmqggmHB3/U326P4g0FLqGWFH3FbL9y17ddxRmrw/cFQoXG43bDqLjNxY1TK9j5hjRhqGuZisjv/ALCYdiCVqa9hMmWy9TutIgpd76lUeXUT/wAJWhXMq+W5w9yt+WDBfc05d9R8lmm37mO37Rd5+43q/wAoIwCy1c7OGJ/Z/UHHJl59RVHZf+4izjrrx7l5d64g5tvA/wAQBvo/xFLv/FQwLG5i5qkBT0/uD1f3LKVeu5Yu2eV1j7i8zrqXlWj/AHMXG31F5/z5gY3ALq9zJ/qXvn6m/O4yfZxBJnGepSHflU5bc8RmR4fzB15eJeOHLHGj8zw6/wCoa18TxO+GXejbuWdjuDODuZGn7hnEdkSuJ6PuJdY2gJz9oBeb3AvNwCu67Qe7s4iCn0HxEA3eq3AbZ2/iFLldPEo96/UA7Sl4vSyUo3qUfzzBvlqXfx/U87/zB2Hj9xyi3USjbU9n3AKq31Ck53APqUOrgC5xBh7JgHGY/wApW3u3mVxdOZi7HMHJvD3FuFH+HMESWYOe/wCpZVN/cWsJndx6wtvcMtO5Yc8p+5zpmlKe5R4m3Nza7gAvvqL4XFfPD3BTd1uNlpOINbO1fUHZyNTXMEDcbbYT9QKKvLDGVTs4RrK8VjPiDhF8xcNhSOWXjdRpNygV0g0Z/ma7tcGOVr3CpeZQS7+5QrvD3HDl+Zk/3L3FucZhYN4e41eTJDLbvuFptw6l5ydxO0queeo5b/MKrKuYYCunME3lwwwxbX/uYtOx8TTC8xsjgthZkv3FLhYg0orS4zLTpKDamY/5cDPGnnxAyImu4jWq13GxqjHZF4X8iYC3Tsl7y2rp17lqeDw8xxb/AAQMmtdyimVn45nHe4FM+eZWC7jk4lW8biYXUSuNX3ALo3/uZRS0XFTYNwSs1cE8b3UsMK3EGzwxLyrW9RYbrcd8bi5++ai8PqZPzLVmoiEK3Loa5HHuDbZ9RtM1vqO8Vm4tjJuO8xhxx8kqgXHm/Crn/9k='
    Local $bString = Binary(_Base64Decode($Background_Texture))
    If $bSaveBinary Then
        Local $hFile = FileOpen($sSavePath & "\Dark Texture 300x300.jpg", 18)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return  $bString
EndFunc   ;==>_Background_Texture

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

 

Edited by Davidyese
Posted

Play with the colors, angle and translations:

;AutoIt v3.3.9.21 or higher needed!
;coded by UEZ build 2013-10-13
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

_GDIPlus_Startup()
Global Const $STM_SETIMAGE = 0x0172
Global Const $iW = 300, $iH = 300
Global Const $hGUI = GUICreate("GDI+ Ring Progressbar", $iW, $iH, -1, -1, $WS_POPUPWINDOW, $WS_EX_TOPMOST)
GUISetBkColor(0)
Global Const $iPic = GUICtrlCreatePic("", 0, 0, $iW, $iH)
;~ GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()

Global $hHBmp_BG, $hB, $fPerc, $iSleep = 60
GUIRegisterMsg($WM_TIMER, "PlayAnim")
DllCall("user32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iSleep, "int", 0)

Do
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            GUIRegisterMsg($WM_TIMER, "")
            _WinAPI_DeleteObject($hHBmp_BG)
            _GDIPlus_Shutdown()
            GUIDelete()
            Exit
    EndSwitch
Until False

Func PlayAnim()
    $hHBmp_BG = _GDIPlus_RingProgressbar($fPerc)
    $hB = GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBmp_BG)
    If $hB Then _WinAPI_DeleteObject($hB)
    _WinAPI_DeleteObject($hHBmp_BG)
    $fPerc += 0.33333
    If $fPerc > 100 Then $fPerc = 0
EndFunc   ;==>PlayAnim

Func _GDIPlus_RingProgressbar($fPerc, $iSize = 300, $sText = "Please wait...")
    Local Const $hBmp = _GDIPlus_BitmapCreateFromMemory(_Background_Texture())
    Local Const $hTexture = _GDIPlus_TextureCreate($hBmp)
    _GDIPlus_BitmapDispose($hBmp)
    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iSize, $iSize)
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetPixelOffsetMode($hCtxt, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)
    _GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
    _GDIPlus_GraphicsFillRect($hCtxt, 0, 0, $iSize, $iSize, $hTexture)

    If $fPerc < 0 Then $fPerc = 0
    If $fPerc > 100 Then $fPerc = 100
    Local Const $hPath = _GDIPlus_PathCreate(), $hPath2 = _GDIPlus_PathCreate(), _
                $fRadius = $iSize / 1.5, $iX = ($iSize - $fRadius) / 2, $iY = ($iSize - $fRadius) / 2, _
                $fDX = $iSize / 10, $fAngel = $fPerc * 360 / 100, $fSize = $iSize / 15

    _GDIPlus_PathAddEllipse($hPath, $iX, $fDX + $iY, $fRadius, $fRadius)

    Local $hBrush = _GDIPlus_LineBrushCreate($iX, $fDX + $iY, $fRadius,  $fRadius, 0, 0, 1)

    Local $aInterpolations[4][2] ;define the interpolated colors and positions
    $aInterpolations[0][0] = 3
    $aInterpolations[1][0] = 0xFF800000 ;Red
    $aInterpolations[1][1] = 0
    $aInterpolations[2][0] = 0xFFFF6700 ;Orange
    $aInterpolations[2][1] = 0.5
    $aInterpolations[3][0] = 0xFFFFFF00 ;Yellow
    $aInterpolations[3][1] = 1.0

    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, $fRadius, $fRadius)
    _GDIPlus_MatrixRotate($hMatrix, -35, False)
    _GDIPlus_LineBrushMultiplyTransform($hBrush, $hMatrix, False)
    _GDIPlus_LineBrushSetPresetBlend($hBrush, $aInterpolations)
    _GDIPlus_MatrixDispose($hMatrix)

    Local Const $hPen = _GDIPlus_PenCreate2($hBrush, $fSize)
    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen)

    _GDIPlus_PathReset($hPath)

    Local Const $hPen2 = _GDIPlus_PenCreate2($hTexture, $fSize + 4)
    _GDIPlus_PathAddArc($hPath, $iX, $fDX + $iY, $fRadius, $fRadius, -90, $fAngel)
    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen2)


    _GDIPlus_PathReset($hPath)
    Local Const $hFamily = _GDIPlus_FontFamilyCreate("Verdana")
    Local Const $hFormat = _GDIPlus_StringFormatCreate()
    Local Const $tLayout = _GDIPlus_RectFCreate(0, $iSize / 12, $iSize, 0)
    Local Const $tLayout2 = _GDIPlus_RectFCreate(0, ($iSize + $iSize / 18) / 2, $iSize, 0)
    _GDIPlus_StringFormatSetAlign($hFormat, 1)

    Local Const $hBrush2 = _GDIPlus_BrushCreateSolid(0xE0FFFFFF)
    _GDIPlus_PenSetColor($hPen, 0x80000000)
    _GDIPlus_PenSetWidth($hPen, 4)
    _GDIPlus_PathAddString($hPath, $sText, $tLayout, $hFamily, 0, $iSize / 12, $hFormat)
    _GDIPlus_PathAddString($hPath, StringFormat("%02d%", $fPerc), $tLayout2, $hFamily, 0, $iSize / 9, $hFormat)

    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen)
    _GDIPlus_GraphicsFillPath($hCtxt, $hPath, $hBrush2)

    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_PenDispose($hPen2)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_BrushDispose($hBrush2)
    _GDIPlus_BrushDispose($hTexture)
    _GDIPlus_PathDispose($hPath)
    _GDIPlus_PathDispose($hPath2)
    _GDIPlus_GraphicsDispose($hCtxt)

    Local Const $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    Return $hHBmp
EndFunc

;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-05-17

Func _Background_Texture($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $Background_Texture
    $Background_Texture &= '/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUEBAUEAwUFBAUGBgUGCA4JCAcHCBEMDQoOFBEVFBMRExMWGB8bFhceFxMTGyUcHiAhIyMjFRomKSYiKR8iIyL/2wBDAQYGBggHCBAJCRAiFhMWIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiL/wgARCAFoAWgDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECB//EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB58LlKJNCVSSiWAAUsCKEoJSXNLAqUhRNQmpSAAAlACgiwTUChLkqBZQURTNABZSELKFQShNQAAIKQ0lAM2USiAtgTWSgJSglzQUhSKMqEoSgQ1nUAFlIQ1mwpCglAsIQ0gsABQWUiUFJKE1ACyDUQ1ENRCpSazohDUQoAFgoJKAEoigUAM0sQpDWdQLBQSgBLCWUms0INSC2AAlKDKiWCoKgoAKQTUEsNZsLFJqUllIUkolmjNlJYLAoCBZSggAKgJSwKgEKQqQ3ILELrItzoiUqC2CWAQqAsKgApAC3IpCpSwEUsCwLENQLELci6xQlBC2AQqUEKQqCoKgAALAUigBLCywoJYNQAFlICxDUQpBQlBNZKg2yNSCy5KQoCUsoSjKUsAaMqACwWUS5KQ1ENJDVxTTI3lDTIpAC51ACywgKlE1CWUAUICwLnQzVJKIoSw1LktgqCwKCShLSTUI1BNQlCUACC3NKkNMjSDUlCCywShLDUsFgLkssKCmS2UksLnQTUJQJRYLLAohSLBYBSSwssKCWUsCgSwAoMrBVMtQZ3AQoICpQsLNQhTNUlgms6JNZKABc0qCpDUgsCgQFlBCwKQoEsKDWUNSwJSVSWUzqCywFJNQlUyoAQFgqDUlBCgSwpDSCpDUQ1ENyCxBZRZTNBNZLYKgWUgAFgAIFlJNQs1CUCC3NCCoBQABKCwllBDUCgAhSASgCAoICywoFlCUXNCAlFzRLCyw1LCAssKQ0lCAAlBCyiKCwlQ1ENJC3NFgAlAAoiwi0iwAFIoAiiAlmjKhKChLAgqDUQoBSTUItCC3IqCwKggFzogLZSAoJQgEooLAAAEKQtzSxCpTKgohQAlIBc6M2UllIDSBc0JSpSgkogBCrABZRLCUChKIoi0yokoi0xQWUms0XNFgAllKCAAQKCwJQgANQICgAlBAoICwLQgAAJQA//8QAHhAAAgICAgMAAAAAAAAAAAAAABFBYAFQIHAwQID/2gAIAQEAAQUC2TGMfQE6NjHznu9jHXXSIuS5MfHGnnxIQtJCyIQhC+p3aFrc63PpReIukV+ddNTYxjGMdB//xAAUEQEAAAAAAAAAAAAAAAAAAACQ/9oACAEDAQE/AQR//8QAFBEBAAAAAAAAAAAAAAAAAAAAkP/aAAgBAgEBPwEEf//EABkQAAEFAAAAAAAAAAAAAAAAAAExUICQoP/aAAgBAQAGPwLDqG0QfWij/8QAJxAAAQQCAQUAAwADAQAAAAAAAAEQEUEhMYEgUWFxkbHB0TCh4fD/2gAIAQEAAT8hIZditSFl/wCD61FNBjDQRgVPbI1NJQutGp2XoXNNTWvTZyTkklG1Jd1JYyv0lO1+iqvdfpPs4dCm+i8i6skk+9GGQx5KtrPrV0LoUxKmCz+kltOSSTt0QRsgghpLF0L0SS87EJyrT7JyfWoknK9WJJ/JJPs+ln3ogswI0H0QtqFbJlkR4XzsRFgzK7aCxdHcVcEk5209MsgvopDv66I2Q6c6aMm0F/woYz0SSTgRRHEksvQuy7bJyd8mTk5U+9CNGSMCoQZbInIq7FUkRcCdPcXQjXb0ytHsjOlIzpSM9Hdlbhk2KghGWXCCy+3W3QQ7kEYI9kb2Z7KcKcKQ3doyrIhJJKTZ9Pr9yiG+tYohiThRVxoVThWQkQV0EO7U19Kr'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= 'LDtyT0/mXl/5NOLjdHdfuZrUd46l0feIgZuiLJ89Qb51eMRqmGGruU5O9yhvUKrEpXe63MNc5bmK037iLdxC+dvMA8yir0Mo4v7l2l8icq5RyzfLAUVy7lXdNoHR3FLbHcTJj8xC+YOdfn+pyYf98QbtraVYVydwr52wOzANnUwsKh48QC8GMo9H+4lHwf7iDN8DnxKVMZEt2lr0/UpvT9SsUvXEprN66lZcOonQ/UD1x15mJ95ue7fUVW3wTTznxMlls49wnfjNTFb4Sr3Xcep2fuBaBecTqu5tQcssFX+Iq+94lafklLtV9TkZs8QqlXvVQz23yQPJMwdYuIplY3yd6iW4WJStWZay1+pVZvHqBhWMv6iZ5q4VWenmNGm/XqGRd7ceIE4zviU8moJZX8zbnT+CYsPGczQwUYOeY88/5l1M3p0Rb1cMmBgdGY7b3UwMXPC4c7C55t2cSlv4JR33EKp317hYr0lH3EtyOWX4/ECnszBo14l28My8Smhy5mHkSoZCu5Xl+5k/NxS/LzGqMc4zMXj+YUtMRWLvUKcL28+o4ZvcWM6Gs/1FpSOtXCrOxz49Rl86efEoOmqggmHB3/U326P4g0FLqGWFH3FbL9y17ddxRmrw/cFQoXG43bDqLjNxY1TK9j5hjRhqGuZisjv/ALCYdiCVqa9hMmWy9TutIgpd76lUeXUT/wAJWhXMq+W5w9yt+WDBfc05d9R8lmm37mO37Rd5+43q/wAoIwCy1c7OGJ/Z/UHHJl59RVHZf+4izjrrx7l5d64g5tvA/wAQBvo/xFLv/FQwLG5i5qkBT0/uD1f3LKVeu5Yu2eV1j7i8zrqXlWj/AHMXG31F5/z5gY3ALq9zJ/qXvn6m/O4yfZxBJnGepSHflU5bc8RmR4fzB15eJeOHLHGj8zw6/wCoa18TxO+GXejbuWdjuDODuZGn7hnEdkSuJ6PuJdY2gJz9oBeb3AvNwCu67Qe7s4iCn0HxEA3eq3AbZ2/iFLldPEo96/UA7Sl4vSyUo3qUfzzBvlqXfx/U87/zB2Hj9xyi3USjbU9n3AKq31Ck53APqUOrgC5xBh7JgHGY/wApW3u3mVxdOZi7HMHJvD3FuFH+HMESWYOe/wCpZVN/cWsJndx6wtvcMtO5Yc8p+5zpmlKe5R4m3Nza7gAvvqL4XFfPD3BTd1uNlpOINbO1fUHZyNTXMEDcbbYT9QKKvLDGVTs4RrK8VjPiDhF8xcNhSOWXjdRpNygV0g0Z/ma7tcGOVr3CpeZQS7+5QrvD3HDl+Zk/3L3FucZhYN4e41eTJDLbvuFptw6l5ydxO0queeo5b/MKrKuYYCunME3lwwwxbX/uYtOx8TTC8xsjgthZkv3FLhYg0orS4zLTpKDamY/5cDPGnnxAyImu4jWq13GxqjHZF4X8iYC3Tsl7y2rp17lqeDw8xxb/AAQMmtdyimVn45nHe4FM+eZWC7jk4lW8biYXUSuNX3ALo3/uZRS0XFTYNwSs1cE8b3UsMK3EGzwxLyrW9RYbrcd8bi5++ai8PqZPzLVmoiEK3Loa5HHuDbZ9RtM1vqO8Vm4tjJuO8xhxx8kqgXHm/Crn/9k='
    Local $bString = Binary(_Base64Decode($Background_Texture))
    If $bSaveBinary Then
        Local $hFile = FileOpen($sSavePath & "\Dark Texture 300x300.jpg", 18)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return  $bString
EndFunc   ;==>_Background_Texture

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

 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted (edited)

@UEZ Hi
Great script indeed. I would like to ask a question concerning the function _GDIPlus_RingProgressbar() . Here are a few lines found in it :

Func _GDIPlus_RingProgressbar(...)
    Local Const $hBmp = _GDIPlus_BitmapCreateFromMemory(_Background_Texture())
    Local Const $hTexture = _GDIPlus_TextureCreate($hBmp)
    _GDIPlus_BitmapDispose($hBmp)
    ...
    _GDIPlus_BrushDispose($hTexture)
    ...
EndFunc

If not mistaken, this function _GDIPlus_RingProgressbar() is called hundred of times in the script, which means that _GDIPlus_BitmapCreateFromMemory(_Background_Texture()) and _GDIPlus_TextureCreate() are called hundred of times too. I tried to call these 2 functions only once, like this :

Func _GDIPlus_RingProgressbar(...)
    Local Static $hBmp = _GDIPlus_BitmapCreateFromMemory(_Background_Texture())
    Local Static $hTexture = _GDIPlus_TextureCreate($hBmp)
    ; _GDIPlus_BitmapDispose($hBmp)
    ...
    ; _GDIPlus_BrushDispose($hTexture)
    ...
EndFunc

It works fine, but now, where to dispose $hBmp and $hTexture when the script ends ?
Maybe it is the reason why you preferred to call the 2 functions hundred of times and dispose the bitmap & the brush in an easy way ?

Thanks for reading

Edited by pixelsearch

"I think you are searching a bug where there is no bug... don't listen to bad advice."

Posted (edited)
8 hours ago, UEZ said:

Play with the colors, angle and translations:

;AutoIt v3.3.9.21 or higher needed!
;coded by UEZ build 2013-10-13
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

_GDIPlus_Startup()
Global Const $STM_SETIMAGE = 0x0172
Global Const $iW = 300, $iH = 300
Global Const $hGUI = GUICreate("GDI+ Ring Progressbar", $iW, $iH, -1, -1, $WS_POPUPWINDOW, $WS_EX_TOPMOST)
GUISetBkColor(0)
Global Const $iPic = GUICtrlCreatePic("", 0, 0, $iW, $iH)
;~ GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()

Global $hHBmp_BG, $hB, $fPerc, $iSleep = 60
GUIRegisterMsg($WM_TIMER, "PlayAnim")
DllCall("user32.dll", "int", "SetTimer", "hwnd", $hGUI, "int", 0, "int", $iSleep, "int", 0)

Do
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            GUIRegisterMsg($WM_TIMER, "")
            _WinAPI_DeleteObject($hHBmp_BG)
            _GDIPlus_Shutdown()
            GUIDelete()
            Exit
    EndSwitch
Until False

Func PlayAnim()
    $hHBmp_BG = _GDIPlus_RingProgressbar($fPerc)
    $hB = GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hHBmp_BG)
    If $hB Then _WinAPI_DeleteObject($hB)
    _WinAPI_DeleteObject($hHBmp_BG)
    $fPerc += 0.33333
    If $fPerc > 100 Then $fPerc = 0
EndFunc   ;==>PlayAnim

Func _GDIPlus_RingProgressbar($fPerc, $iSize = 300, $sText = "Please wait...")
    Local Const $hBmp = _GDIPlus_BitmapCreateFromMemory(_Background_Texture())
    Local Const $hTexture = _GDIPlus_TextureCreate($hBmp)
    _GDIPlus_BitmapDispose($hBmp)
    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($iSize, $iSize)
    Local Const $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetPixelOffsetMode($hCtxt, $GDIP_PIXELOFFSETMODE_HIGHQUALITY)
    _GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
    _GDIPlus_GraphicsFillRect($hCtxt, 0, 0, $iSize, $iSize, $hTexture)

    If $fPerc < 0 Then $fPerc = 0
    If $fPerc > 100 Then $fPerc = 100
    Local Const $hPath = _GDIPlus_PathCreate(), $hPath2 = _GDIPlus_PathCreate(), _
                $fRadius = $iSize / 1.5, $iX = ($iSize - $fRadius) / 2, $iY = ($iSize - $fRadius) / 2, _
                $fDX = $iSize / 10, $fAngel = $fPerc * 360 / 100, $fSize = $iSize / 15

    _GDIPlus_PathAddEllipse($hPath, $iX, $fDX + $iY, $fRadius, $fRadius)

    Local $hBrush = _GDIPlus_LineBrushCreate($iX, $fDX + $iY, $fRadius,  $fRadius, 0, 0, 1)

    Local $aInterpolations[4][2] ;define the interpolated colors and positions
    $aInterpolations[0][0] = 3
    $aInterpolations[1][0] = 0xFF800000 ;Red
    $aInterpolations[1][1] = 0
    $aInterpolations[2][0] = 0xFFFF6700 ;Orange
    $aInterpolations[2][1] = 0.5
    $aInterpolations[3][0] = 0xFFFFFF00 ;Yellow
    $aInterpolations[3][1] = 1.0

    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, $fRadius, $fRadius)
    _GDIPlus_MatrixRotate($hMatrix, -35, False)
    _GDIPlus_LineBrushMultiplyTransform($hBrush, $hMatrix, False)
    _GDIPlus_LineBrushSetPresetBlend($hBrush, $aInterpolations)
    _GDIPlus_MatrixDispose($hMatrix)

    Local Const $hPen = _GDIPlus_PenCreate2($hBrush, $fSize)
    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen)

    _GDIPlus_PathReset($hPath)

    Local Const $hPen2 = _GDIPlus_PenCreate2($hTexture, $fSize + 4)
    _GDIPlus_PathAddArc($hPath, $iX, $fDX + $iY, $fRadius, $fRadius, -90, $fAngel)
    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen2)


    _GDIPlus_PathReset($hPath)
    Local Const $hFamily = _GDIPlus_FontFamilyCreate("Verdana")
    Local Const $hFormat = _GDIPlus_StringFormatCreate()
    Local Const $tLayout = _GDIPlus_RectFCreate(0, $iSize / 12, $iSize, 0)
    Local Const $tLayout2 = _GDIPlus_RectFCreate(0, ($iSize + $iSize / 18) / 2, $iSize, 0)
    _GDIPlus_StringFormatSetAlign($hFormat, 1)

    Local Const $hBrush2 = _GDIPlus_BrushCreateSolid(0xE0FFFFFF)
    _GDIPlus_PenSetColor($hPen, 0x80000000)
    _GDIPlus_PenSetWidth($hPen, 4)
    _GDIPlus_PathAddString($hPath, $sText, $tLayout, $hFamily, 0, $iSize / 12, $hFormat)
    _GDIPlus_PathAddString($hPath, StringFormat("%02d%", $fPerc), $tLayout2, $hFamily, 0, $iSize / 9, $hFormat)

    _GDIPlus_GraphicsDrawPath($hCtxt, $hPath, $hPen)
    _GDIPlus_GraphicsFillPath($hCtxt, $hPath, $hBrush2)

    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_PenDispose($hPen2)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_BrushDispose($hBrush2)
    _GDIPlus_BrushDispose($hTexture)
    _GDIPlus_PathDispose($hPath)
    _GDIPlus_PathDispose($hPath2)
    _GDIPlus_GraphicsDispose($hCtxt)

    Local Const $hHBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap)
    _GDIPlus_BitmapDispose($hBitmap)
    Return $hHBmp
EndFunc

;Code below was generated by: 'File to Base64 String' Code Generator v1.12 Build 2013-05-17

Func _Background_Texture($bSaveBinary = False, $sSavePath = @ScriptDir)
    Local $Background_Texture
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= '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'
    $Background_Texture &= 'LDtyT0/mXl/5NOLjdHdfuZrUd46l0feIgZuiLJ89Qb51eMRqmGGruU5O9yhvUKrEpXe63MNc5bmK037iLdxC+dvMA8yir0Mo4v7l2l8icq5RyzfLAUVy7lXdNoHR3FLbHcTJj8xC+YOdfn+pyYf98QbtraVYVydwr52wOzANnUwsKh48QC8GMo9H+4lHwf7iDN8DnxKVMZEt2lr0/UpvT9SsUvXEprN66lZcOonQ/UD1x15mJ95ue7fUVW3wTTznxMlls49wnfjNTFb4Sr3Xcep2fuBaBecTqu5tQcssFX+Iq+94lafklLtV9TkZs8QqlXvVQz23yQPJMwdYuIplY3yd6iW4WJStWZay1+pVZvHqBhWMv6iZ5q4VWenmNGm/XqGRd7ceIE4zviU8moJZX8zbnT+CYsPGczQwUYOeY88/5l1M3p0Rb1cMmBgdGY7b3UwMXPC4c7C55t2cSlv4JR33EKp317hYr0lH3EtyOWX4/ECnszBo14l28My8Smhy5mHkSoZCu5Xl+5k/NxS/LzGqMc4zMXj+YUtMRWLvUKcL28+o4ZvcWM6Gs/1FpSOtXCrOxz49Rl86efEoOmqggmHB3/U326P4g0FLqGWFH3FbL9y17ddxRmrw/cFQoXG43bDqLjNxY1TK9j5hjRhqGuZisjv/ALCYdiCVqa9hMmWy9TutIgpd76lUeXUT/wAJWhXMq+W5w9yt+WDBfc05d9R8lmm37mO37Rd5+43q/wAoIwCy1c7OGJ/Z/UHHJl59RVHZf+4izjrrx7l5d64g5tvA/wAQBvo/xFLv/FQwLG5i5qkBT0/uD1f3LKVeu5Yu2eV1j7i8zrqXlWj/AHMXG31F5/z5gY3ALq9zJ/qXvn6m/O4yfZxBJnGepSHflU5bc8RmR4fzB15eJeOHLHGj8zw6/wCoa18TxO+GXejbuWdjuDODuZGn7hnEdkSuJ6PuJdY2gJz9oBeb3AvNwCu67Qe7s4iCn0HxEA3eq3AbZ2/iFLldPEo96/UA7Sl4vSyUo3qUfzzBvlqXfx/U87/zB2Hj9xyi3USjbU9n3AKq31Ck53APqUOrgC5xBh7JgHGY/wApW3u3mVxdOZi7HMHJvD3FuFH+HMESWYOe/wCpZVN/cWsJndx6wtvcMtO5Yc8p+5zpmlKe5R4m3Nza7gAvvqL4XFfPD3BTd1uNlpOINbO1fUHZyNTXMEDcbbYT9QKKvLDGVTs4RrK8VjPiDhF8xcNhSOWXjdRpNygV0g0Z/ma7tcGOVr3CpeZQS7+5QrvD3HDl+Zk/3L3FucZhYN4e41eTJDLbvuFptw6l5ydxO0queeo5b/MKrKuYYCunME3lwwwxbX/uYtOx8TTC8xsjgthZkv3FLhYg0orS4zLTpKDamY/5cDPGnnxAyImu4jWq13GxqjHZF4X8iYC3Tsl7y2rp17lqeDw8xxb/AAQMmtdyimVn45nHe4FM+eZWC7jk4lW8biYXUSuNX3ALo3/uZRS0XFTYNwSs1cE8b3UsMK3EGzwxLyrW9RYbrcd8bi5++ai8PqZPzLVmoiEK3Loa5HHuDbZ9RtM1vqO8Vm4tjJuO8xhxx8kqgXHm/Crn/9k='
    Local $bString = Binary(_Base64Decode($Background_Texture))
    If $bSaveBinary Then
        Local $hFile = FileOpen($sSavePath & "\Dark Texture 300x300.jpg", 18)
        FileWrite($hFile, $bString)
        FileClose($hFile)
    EndIf
    Return  $bString
EndFunc   ;==>_Background_Texture

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

 

 

Excellent work, one more requst please :

i need transparent background instead of black one if could be without distubing smooth edges and gradient colours

Thanks in advance

Edited by Davidyese
Posted
13 hours ago, pixelsearch said:

@UEZ Hi
Great script indeed. I would like to ask a question concerning the function _GDIPlus_RingProgressbar() . Here are a few lines found in it :

Func _GDIPlus_RingProgressbar(...)
    Local Const $hBmp = _GDIPlus_BitmapCreateFromMemory(_Background_Texture())
    Local Const $hTexture = _GDIPlus_TextureCreate($hBmp)
    _GDIPlus_BitmapDispose($hBmp)
    ...
    _GDIPlus_BrushDispose($hTexture)
    ...
EndFunc

If not mistaken, this function _GDIPlus_RingProgressbar() is called hundred of times in the script, which means that _GDIPlus_BitmapCreateFromMemory(_Background_Texture()) and _GDIPlus_TextureCreate() are called hundred of times too. I tried to call these 2 functions only once, like this :

Func _GDIPlus_RingProgressbar(...)
    Local Static $hBmp = _GDIPlus_BitmapCreateFromMemory(_Background_Texture())
    Local Static $hTexture = _GDIPlus_TextureCreate($hBmp)
    ; _GDIPlus_BitmapDispose($hBmp)
    ...
    ; _GDIPlus_BrushDispose($hTexture)
    ...
EndFunc

It works fine, but now, where to dispose $hBmp and $hTexture when the script ends ?
Maybe it is the reason why you preferred to call the 2 functions hundred of times and dispose the bitmap & the brush in an easy way ?

Thanks for reading

The animation examples are not optimized for speed rather proof-of-concept versions. To speed up you can do some optimization, e.g. what you wrote or not to create the texture every time as it is static or calling GDI+ functions directly or ...

6 hours ago, Davidyese said:

Excellent work, one more requst please :

i need transparent background instead of black one if could be without distubing smooth edges and gradient colours

Thanks in advance

There are also plenty of examples how to show the progress in a transparent GUI.

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted

Dear UEZ,

Thanks a lot man, i appreciate and i'm very thankful

accept my respect and my greetings

Last code what i'm expecting from you & is excellent...

Posted (edited)

and an approach in practical packaging   :)

; https://www.autoitscript.com/forum/topic/213113-simple-circular-progressbar-with-smooth-edges-gradient-color/#findComment-1545755
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WinAPISysWin.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

; as demo
Local $aList[1000]
Local $aAvg[101]
Local $iCnt = UBound($aList)
ConsoleWrite("$iCnt=" & $iCnt & @CRLF)
;~ _CircularProgress(0, -1, -1, 400, 20)
For $i = 1 To UBound($aList)
    Local $iRandom = Random(1, 100, 50)
    $aAvg[$iRandom] += 1
    $nProgress = Int($i / $iCnt * 100)
    ConsoleWrite("$nProgress=" & $nProgress & @CRLF)
    _CircularProgress($nProgress)
Next
Sleep(200)
_CircularProgress(101) ; Clean up the progress bar window
;~ _ArrayDisplay($aAvg)


; #FUNCTION# ====================================================================================================================
; Name...........: _CircularProgress
; Description....: Creates a customizable circular progress bar using GDI+ graphics.
; Syntax.........: _CircularProgress($iPercent [, $iLeft = -1 [, $iTop = -1 [, $iSize = 300 [, $iThickness = 30 [, $TextCol = 0xFFFFFF [, $StartCol = 0xFF0000, $EndCol = 0xFFFF00]]]]]])
; Parameters.....: $iPercent     - The percentage complete for the progress bar (0 to 100).
;                  $iLeft        - [optional] X-coordinate of the top-left corner. (Default is -1 for center)
;                  $iTop         - [optional] Y-coordinate of the top-left corner. (Default is -1 for center)
;                  $iSize        - [optional] width and height of the circular progress bar. (Default is 300)
;                  $iThickness   - [optional] Thickness of the progress arc. (Default is 30)
;                  $TextCol      - [optional] Color of the text within the progress bar. (Default is White)
;                  $StartCol     - [optional] Start color of the progress arc gradient. (Default is Yellow)
;                  $EndCol       - [optional] End color of the progress arc gradient. (Default is Red)
; Return values .: Success: create the progress bar GUI
; Author ........: ioa747
; Modified ......: 07/09/2025 - v0.4
; Remarks .......: Cleanup is handled automatically by passing an $iPercent > 100.
;                  Avoid using 0x050505 Color for TextCol, ColStart, or ColEnd, as it is used as a transparency color for the background.
; Related .......: _GDIPlus_Startup, _GDIPlus_GraphicsCreateFromHWND, etc.
; Link ..........: https://www.autoitscript.com/forum/topic/213113-simple-circular-progressbar-with-smooth-edges-gradient-color/#findComment-1545755
; Example .......: _CircularProgress(50, -1, -1, 300, 20, 0x00FF00, 0xFF00FF, 0xFFFFFF)
; ===============================================================================================================================
Func _CircularProgress($iPercent, $iLeft = -1, $iTop = -1, $iSize = 300, $iThickness = 30, $TextCol = 0xFFFFFF, $StartCol = 0xFFFF00, $EndCol = 0xFF0000)
    Local Static $hGUI, $hGraphics, $hBmp, $hBmpGraphics, $inSize, $iRadius, $inThickness, $iX, $iY, $bInit = False

    ; initialize RingProgressBar (if not)
    If Not $bInit Then
        _GDIPlus_Startup()
        $inThickness = $iThickness
        $inSize = $iSize
        $iRadius = ($inSize - 4 ) / 2
        $iX = $inSize / 2
        $iY = $iX
        ; transparent layered window
        $hGUI = GUICreate("RingProgressBar", $inSize, $inSize, $iLeft, $iTop, $WS_POPUP, $WS_EX_LAYERED)
        GUISetBkColor(0x050505) ; 0x050505
        _WinAPI_SetLayeredWindowAttributes($hGUI, 0x050505)
        GUISetState(@SW_SHOW)

        ; Create a graphics object linked to the GUI
        $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)

        ; Create an off-screen bitmap for double-buffering
        $hBmp = _GDIPlus_BitmapCreateFromScan0($inSize, $inSize)
        $hBmpGraphics = _GDIPlus_ImageGetGraphicsContext($hBmp)
        $bInit = True
    EndIf

    ; Clean up the RingProgressBar (if $iPercent > 100)
    If $iPercent > 100 Then
        ; Cleanup
        _GDIPlus_GraphicsDispose($hBmpGraphics)
        _GDIPlus_BitmapDispose($hBmp)
        _GDIPlus_GraphicsDispose($hGraphics)
        _GDIPlus_Shutdown()
        GUIDelete($hGUI)
        $bInit = False
        Return
    EndIf

    ; Colors from RGB to ARGB
    $TextCol = "0xFF" & StringTrimLeft(Hex($TextCol), 2)
    $StartCol = "0xFF" & StringTrimLeft(Hex($StartCol), 2)
    $EndCol = "0xFF" & StringTrimLeft(Hex($EndCol), 2)

    _GDIPlus_GraphicsClear($hBmpGraphics, 0x00050505)
    _GDIPlus_GraphicsSetSmoothingMode($hBmpGraphics, 2)
    _GDIPlus_GraphicsSetTextRenderingHint($hBmpGraphics, 5)

    ; Draw full ring background
    Local $hBrushBG = _GDIPlus_BrushCreateSolid(0xFF050505)
    _GDIPlus_GraphicsFillEllipse($hBmpGraphics, $iX - $iRadius, $iY - $iRadius, $iRadius * 2, $iRadius * 2, $hBrushBG)
    _GDIPlus_BrushDispose($hBrushBG)

    ; Draw progress arc as pie
    Local $angle = ($iPercent / 100) * 360
    Local $hBrushProg = _GDIPlus_LineBrushCreate($iX - $iRadius, $iY, $iX + $iRadius, $iY, $EndCol, $StartCol, 1)
    _GDIPlus_GraphicsFillPie($hBmpGraphics, $iX - $iRadius, $iY - $iRadius, $iRadius * 2, $iRadius * 2, -90, $angle, $hBrushProg)
    _GDIPlus_BrushDispose($hBrushProg)

    ; Draw inner circle
    Local $innerR = $iRadius - $inThickness
    Local $hBrushWhite = _GDIPlus_BrushCreateSolid(0xFF050505)
    _GDIPlus_GraphicsFillEllipse($hBmpGraphics, $iX - $innerR, $iY - $innerR, $innerR * 2, $innerR * 2, $hBrushWhite)
    _GDIPlus_BrushDispose($hBrushWhite)

    Local $hFontFamily = _GDIPlus_FontFamilyCreate("Times New Roman")
    Local $iFontSize = $iRadius * 0.3
    Local $hFont = _GDIPlus_FontCreate($hFontFamily, $iFontSize, 1)
    Local $hFormat = _GDIPlus_StringFormatCreate()
    _GDIPlus_StringFormatSetAlign($hFormat, 2)
    _GDIPlus_StringFormatSetLineAlign($hFormat, 2)
    Local $hBrushText = _GDIPlus_BrushCreateSolid($TextCol)

    ; Draw percentage text
    Local $rect = _GDIPlus_RectFCreate(($inSize - ($iFontSize * 4)) / 2, ($inSize - ($iFontSize * 2)) / 2, $iFontSize * 4, $iFontSize * 2)
    _GDIPlus_GraphicsDrawStringEx($hBmpGraphics, $iPercent & "%", $hFont, $rect, $hFormat, $hBrushText)

    _GDIPlus_FontFamilyDispose($hFontFamily)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrushText)

    _GDIPlus_GraphicsDrawImage($hGraphics, $hBmp, 0, 0)
EndFunc   ;==>_CircularProgress


 

Edited by ioa747
update to v0.4

I know that I know nothing

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...