Nemcija Posted August 31, 2011 Share Posted August 31, 2011 (edited) Hey, Is it possible to create a progressbar with text on it that turns it color (inverted or something) if the background turns dark? I've made a small sketch of it: Regards Nem Edited August 31, 2011 by Nemcija [url=www.vergessene-welt.de][/url] Link to comment Share on other sites More sharing options...
SandelPerieanu Posted September 1, 2011 Share Posted September 1, 2011 try this: Link to comment Share on other sites More sharing options...
Nemcija Posted September 5, 2011 Author Share Posted September 5, 2011 Nope this does not what I want. [url=www.vergessene-welt.de][/url] Link to comment Share on other sites More sharing options...
Zedna Posted September 5, 2011 Share Posted September 5, 2011 (edited) Is it possible to create a progressbar with text on it that turns it color (inverted) if the background turns dark? I want to see some simple clever solution for tis too. EDIT: I remember in Delphi there was some standard component for this. Edited September 5, 2011 by Zedna Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
rover Posted September 5, 2011 Share Posted September 5, 2011 (edited) Nope this does not what I want. Look again That feature was requested in the thread ; Function Name: _ProgressSetFont() ; Description:: Sets the Font and Color of the Text of the Progressbar ; Parameter(s): $ID : ID of Progressbar ; $Font : Name of the font (empty String "" to do not change) ; $size : [Optional] size of the font ( 0 or negative to leave the old) ; $Styles : [Optional] The style of the typeface. Can be a combination of the following: ; 0 - Normal weight or thickness of the typeface ; 1 - Bold typeface ; 2 - Italic typeface ; 4 - Underline ; 8 - Strikethrough ; ( -1, negative to leave the old) ; $ARGBcolor : [Optional] the color of the font, can be RGB or ARGB (depending on $isARGB) ; (empty String "" to do not change) ; $InverseColor: [Optional] should the color be inversed when the bar is under the text? ; $isARGB : [Optional] Sets, whether $ARGBcolor is RGB (False, default) or ARGB (True) ; Requirement(s): This UDF ; Return Value(s): Success: 1, Error: 0 ; Author(s): Prog@ndy #include <StaticConstants.au3> #include <GDIpProgress.au3> Global $Gui, $nMsg, $iPercent, $slid, $sID, $iPos $Gui = GUICreate("Gradient ProgressBar", 400, 350) $slid = GUICtrlCreateSlider(5, 20, 310, 30) GUICtrlSetData(-1, 50) $sID = _ProgressCreate(10, 60, 300, 40) _ProgressSet($sID, 50) _ProgressSetText($sID, "Install %P%%") _ProgressSetColors($sID, 0x89A49B, 0xF0D6C7, 0xFFFFFF, 0xFFFFFF) _ProgressSetFont($sID, "", -1, -1, 0x000000, 1) GUISetState() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE _ProgressDelete($sID) ; MUST BE DONE ON EXIT _Progress_CallBack_Free(1) ; Force Killing Timer _GDIPlus_Shutdown() Exit Case 0 ;The GUIRegisterMsg() with WM_HSCROLL/WM_VSCROLL on-event method is preferable to polling in the message loop $iPos = GUICtrlRead($slid) If $iPercent <> $iPos Then $iPercent = $iPos _ProgressSet($sID, $iPercent) EndIf EndSwitch WEnd Edited September 5, 2011 by rover I see fascists... Link to comment Share on other sites More sharing options...
monoscout999 Posted September 6, 2011 Share Posted September 6, 2011 (edited) Well, i came to late, but anyway i just write this, it is far to be perfect and is just an GDI+ exersice. expandcollapse popup#include <WinAPI.au3> #include <GDIPlus.au3> #include <GDIP.au3> Global $iPad = 2 Global $iWidth = 360 Global $iHeight = 30 Global $iMax = 100 Global $iValue = 50 Global $iStep = $iWidth / $iMax $hGui = GUICreate("GDI+ ProgressBar by monoscout999") ;~ GUISetBkColor(0X123456) $iPic = GUICtrlCreatePic("", 20 - $iPad, 100 - $iPad, $iWidth + $iPad * 2, $iHeight + $iPad * 2) _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle($iPic)) $BackBufferBMP = _GDIPlus_BitmapCreateFromGraphics($iWidth + $iPad * 2, $iHeight + $iPad * 2, $hGraphics) $BackBufferGr = _GDIPlus_ImageGetGraphicsContext($BackBufferBMP) _GDIPlus_GraphicsSetSmoothingMode($BackBufferGr,2) $hFBrush = _GDIPlus_BrushCreateSolid(0xFF0000FF) ; Fill area $hEBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF) ; Empty area & Fill text area ;~ $hBrush = _GDIPlus_BrushCreateSolid(0xFF000000) $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $tLayout = _GDIPlus_RectFCreate((($iWidth + $iPad * 2) / 2) - 25, $iPad*4) $hPath = _GDIPLus_pathcreate() AdlibRegister("Drawing", 50) GUISetState() For $i = 1 to 100 $iValue = $i Sleep(50) Next Do Until GUIGetMsg() = -3 AdlibUnRegister("Drawing") _GDIPlus_PathDispose($hPath) _GDIPlus_FontFamilyDispose ($hFamily) _GDIPlus_StringFormatDispose ($hFormat) _GDIPlus_BrushDispose($hEBrush) _GDIPlus_BrushDispose($hFBrush) _GDIPlus_GraphicsDispose($BackBufferGr) _GDIPlus_BitmapDispose($BackBufferBMP) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() Func Drawing() _GDIPlus_GraphicsFillRect($BackBufferGr, 0, 0, $iWidth + $iPad * 2, $iHeight + $iPad * 2) _GDIPlus_GraphicsFillRect($BackBufferGr, $iPad, $iPad, round($iValue * $iStep), $iHeight,$hFBrush) _GDIPlus_GraphicsFillRect($BackBufferGr, $iValue * $iStep+$iPad, $iPad, round($iWidth - $iValue * $iStep), $iHeight, $hEBrush) _GDIPlus_PathReset($hPath) _GDIPlus_PathAddString($hPath, $iValue & " %", $tLayout, $hFamily, 3, 16, $hFormat) $RectRgn = _WinAPI_CreateRectRgn($iPad, $iPad, $iPad + round($iValue * $iStep), $iPad + $iHeight) $GDIRectRgn = _GDIPlus_RegionCreateFromHrgn($RectRgn) _GDIPlus_RegionCombinePath($GDIRectRgn, $hPath,1) _WinAPI_DeleteObject($RectRgn) _GDIPlus_GraphicsFillPath($BackBufferGr, $hPath) _GDIPlus_GraphicsFillRegion($BackBufferGr,$GDIRectRgn,$hEBrush) _GDIPlus_GraphicsDrawImageRect($hGraphics, $BackBufferBMP, 0, 0, $iWidth + $iPad * 2, $iHeight + $iPad * 2) _GDIPlus_RegionDispose($GDIRectRgn) EndFunc ;==>Drawing EDIT: It needs GDIP.au3, you can get it from the link in my signature. Edited September 6, 2011 by monoscout999 Link to comment Share on other sites More sharing options...
Zedna Posted September 6, 2011 Share Posted September 6, 2011 (edited) Well, i came to late, but anyway i just write this, it is far to be perfect and is just an GDI+ exersice. Very nice example!That's exactly what I meant. It just have got some Round() related flicker bug at right corner area (fill empty rect),right vertical edge of progressbar (empty area) is moving by 1 or 2 pixels while it changes its value. Edited September 6, 2011 by Zedna Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
UEZ Posted September 6, 2011 Share Posted September 6, 2011 @monoscout999: nice example! Br, UEZ 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
monoscout999 Posted September 6, 2011 Share Posted September 6, 2011 Thanks for the feedback i fix it and i make it good loooking too expandcollapse popup#include <WinAPI.au3> #include <GDIPlus.au3> #include <GDIP.au3> Global $iPad = 2 Global $iWidth = 360 Global $iHeight = 25 Global $iMax = 100 Global $iValue = 50 Global $iStep = $iWidth / $iMax Global $iLoopStep = 1 Global $iFontSize = Round($iHeight * 0.8) $hGui = GUICreate("GDI+ ProgressBar by monoscout999") GUISetBkColor(0X123456) $iPic = GUICtrlCreatePic("", 20 - $iPad, 100 - $iPad, $iWidth + $iPad * 2, $iHeight + $iPad * 2) _GDIPlus_Startup() $hGraphics = _GDIPlus_GraphicsCreateFromHWND(GUICtrlGetHandle($iPic)) $BackBufferBMP = _GDIPlus_BitmapCreateFromGraphics($iWidth + $iPad * 2, $iHeight + $iPad * 2, $hGraphics) $BackBufferGr = _GDIPlus_ImageGetGraphicsContext($BackBufferBMP) _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2) _GDIPlus_GraphicsSetSmoothingMode($BackBufferBMP, 2) $hCBrush = _GDIPlus_LineBrushCreate(0, 0, 0, $iHeight / 2, 0x11FFFFFF, 0xFF000000, 1) ; Contorn Brush $hFBrush = _GDIPlus_LineBrushCreate(0, 0, 0, $iHeight / 2, 0xFF000055, 0xFF0000FF, 1) ; Fill area $hEBrush = _GDIPlus_LineBrushCreate(0, 0, 0, $iHeight / 2, 0xFF777777, 0xFFFFFFFF, 1) ; Empty area & Fill text area $hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF) $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Comic Sans MS") $tLayout = _GDIPlus_RectFCreate($iWidth / 2 - $iFontSize, $iHeight / 2 - $iFontSize / 1.5) ; Something Like that :S $hPath = _GDIPLus_pathcreate() AdlibRegister("Drawing", 50) GUISetState() For $i = 0 to $iMax step $iLoopStep $iValue = $i Sleep(50) If $iMax - $i < $iLoopStep then $iValue = $iMax Next Do Until GUIGetMsg() = -3 AdlibUnRegister("Drawing") _GDIPlus_PathDispose($hPath) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_BrushDispose($hEBrush) _GDIPlus_BrushDispose($hFBrush) _GDIPlus_BrushDispose($hCBrush) _GDIPlus_GraphicsDispose($BackBufferGr) _GDIPlus_BitmapDispose($BackBufferBMP) _GDIPlus_GraphicsDispose($hGraphics) _GDIPlus_Shutdown() Func Drawing() _GDIPlus_GraphicsFillRect($BackBufferGr, 0, 0, $iWidth + $iPad * 2, $iHeight + $iPad * 2,$hCBrush) _GDIPlus_GraphicsFillRect($BackBufferGr, $iPad, $iPad, Round($iValue * $iStep), $iHeight, $hFBrush) _GDIPlus_GraphicsFillRect($BackBufferGr, Round($iValue * $iStep + $iPad), $iPad, Round($iWidth - $iValue * $iStep), $iHeight, $hEBrush) _GDIPlus_PathReset($hPath) _GDIPlus_PathAddString($hPath, Round($iValue * 100 / $iMax) & " %", $tLayout, $hFamily, 2, $iFontSize, $hFormat) $RectRgn = _WinAPI_CreateRectRgn($iPad, $iPad, Round($iValue * $iStep), $iPad + $iHeight) $GDIRectRgn = _GDIPlus_RegionCreateFromHrgn($RectRgn) _GDIPlus_RegionCombinePath($GDIRectRgn, $hPath, 1) _WinAPI_DeleteObject($RectRgn) _GDIPlus_GraphicsFillPath($BackBufferGr, $hPath) _GDIPlus_GraphicsFillRegion($BackBufferGr, $GDIRectRgn, $hBrush) _GDIPlus_GraphicsDrawImageRect($hGraphics, $BackBufferBMP, 0, 0, $iWidth + $iPad * 2, $iHeight + $iPad * 2) _GDIPlus_RegionDispose($GDIRectRgn) EndFunc ;==>Drawing Link to comment Share on other sites More sharing options...
Zedna Posted September 6, 2011 Share Posted September 6, 2011 (edited) Well, i came to late, but anyway i just write this, it is far to be perfect and is just an GDI+ exersice. EDIT: It needs GDIP.au3, you can get it from the link in my signature. Original Func Drawing() _GDIPlus_GraphicsFillRect($BackBufferGr, 0, 0, $iWidth + $iPad * 2, $iHeight + $iPad * 2) _GDIPlus_GraphicsFillRect($BackBufferGr, $iPad, $iPad, round($iValue * $iStep), $iHeight,$hFBrush) _GDIPlus_GraphicsFillRect($BackBufferGr, $iValue * $iStep+$iPad, $iPad, round($iWidth - $iValue * $iStep), $iHeight, $hEBrush) ... Fixed bad repainting of right edge: Func Drawing() _GDIPlus_GraphicsFillRect($BackBufferGr, 0, 0, $iWidth + $iPad * 2, $iHeight + $iPad * 2) _GDIPlus_GraphicsFillRect($BackBufferGr, $iPad, $iPad, $iWidth, $iHeight, $hEBrush) _GDIPlus_GraphicsFillRect($BackBufferGr, $iPad, $iPad, round($iValue * $iStep), $iHeight,$hFBrush) ... Edited September 6, 2011 by Zedna Resources UDF ResourcesEx UDF AutoIt Forum Search Link to comment Share on other sites More sharing options...
monoscout999 Posted September 6, 2011 Share Posted September 6, 2011 Thanks for the correction, I also have corrected that in the last post but in other way. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now