Steurendo Posted December 26, 2012 Posted December 26, 2012 Hi everyone! How can i draw a simple text on a GUI with the GDIPlus.au3 library or calling GDIPlus.dll? Thanks in advance!
somdcomputerguy Posted December 26, 2012 Posted December 26, 2012 (edited) Maybe this will get you started - _GDIPlus_FontCreate, look at the example code. Good Luck! Edited December 26, 2012 by somdcomputerguy - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
PedroWarlock Posted April 25, 2017 Posted April 25, 2017 Sorry my english Sorry for revive this topic, but i can't create a new topic Like this. How i can drow a border and border color in this example?
PedroWarlock Posted April 25, 2017 Posted April 25, 2017 Sorry my english Sorry for revive this topic, but i can't create a new topic Like this. How i can drow a border and border color in this example?
genius257 Posted April 25, 2017 Posted April 25, 2017 Hi @PedroWarlock. Is it a window border, a border around the text or something else? To show your appreciation My highlighted topics: AutoIt Package Manager, AutoItObject Pure AutoIt, AutoIt extension for Visual Studio Code Github: AutoIt HTTP Server, AutoIt HTML Parser
Malkey Posted April 26, 2017 Posted April 26, 2017 Here is a modified _GDIPlus_FontCreate() function's example from AutoIt help file with a couple of coloured borders added. expandcollapse popup#include <GDIPlus.au3> #include <GUIConstantsEx.au3> ; Modified _GDIPlus_FontCreate() function's example from AutoIt help file. Example() Func Example() Local $hGUI, $hGraphic, $hBrush, $hFormat, $hFamily, $hFont, $tLayout, $hPen1, $hPen2 ; Create GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState(@SW_SHOW) ; Draw a string _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) $hBrush = _GDIPlus_BrushCreateSolid(0x7F00007F) $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $hFont = _GDIPlus_FontCreate($hFamily, 12, 2) $tLayout = _GDIPlus_RectFCreate(140, 110, 100, 20) _GDIPlus_GraphicsDrawStringEx($hGraphic, "Hello world", $hFont, $tLayout, $hFormat, $hBrush) ; Borders added to example $hPen1 = _GDIPlus_PenCreate(0xFFFF0000, 1, 2) ; Red colour in ARGB (hexidecimal 0xAARRGGBB) $hPen2 = _GDIPlus_PenCreate(0xFF0000FF, 3, 2) ; Blue colour in ARGB (hexidecimal 0xAARRGGBB) _GDIPlus_GraphicsDrawRect($hGraphic, 140, 110, 100, 20, $hPen1) ; Border around text _GDIPlus_GraphicsDrawRect($hGraphic, 3, 3, 394, 294, $hPen2) ; Inside border of 400x300 GUI ; Loop until the user exits. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ; Clean up resources _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_PenDispose($hPen1) _GDIPlus_PenDispose($hPen2) _GDIPlus_Shutdown() EndFunc ;==>Example
InunoTaishou Posted April 26, 2017 Posted April 26, 2017 I kind of want to guess that @PedroWarlock is talking about the Stroke effect on text (like in photoshop), not a border around the bitmap?
UEZ Posted April 27, 2017 Posted April 27, 2017 Maybe something like this here!? expandcollapse popup#include <GDIPlus.au3> #include <GUIConstantsEx.au3> ; Modified _GDIPlus_FontCreate() function's example from AutoIt help file. Example() Func Example() Local $hGUI, $hGraphic, $hBrush, $hFormat, $hFamily, $tLayout, $hPen, $hPath ; Create GUI $hGUI = GUICreate("GDI+", 400, 300) GUISetState(@SW_SHOW) ; Draw a string _GDIPlus_Startup() $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) _GDIPlus_GraphicsSetSmoothingMode($hGraphic, $GDIP_SMOOTHINGMODE_ANTIALIAS8X8) _GDIPlus_GraphicsSetPixelOffsetMode($hGraphic, $GDIP_PIXELOFFSETMODE_HALF) _GDIPlus_GraphicsSetTextRenderingHint($hGraphic, $GDIP_TEXTRENDERINGHINT_ANTIALIASGRIDFIT) $hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF) $hPath = _GDIPlus_PathCreate() $hPen = _GDIPlus_PenCreate(0xFF303030, 4) $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Impact") $tLayout = _GDIPlus_RectFCreate(0, 0, 400, 300) _GDIPlus_StringFormatSetAlign($hFormat, 1) _GDIPlus_StringFormatSetLineAlign($hFormat, 1) _GDIPlus_PenSetLineJoin($hPen, 2) _GDIPlus_PathAddString($hPath, "Hello GDI+ World", $tLayout, $hFamily, 0, 80, $hFormat) _GDIPlus_GraphicsFillPath($hGraphic, $hPath, $hBrush) _GDIPlus_GraphicsDrawPath($hGraphic, $hPath, $hPen) ; Loop until the user exits. Do Until GUIGetMsg() = $GUI_EVENT_CLOSE ; Clean up resources _GDIPlus_PathDispose($hPath) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_PenDispose($hPen) _GDIPlus_Shutdown() EndFunc ;==>Example 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!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
PedroWarlock Posted May 3, 2017 Posted May 3, 2017 (edited) Look at this example. I'm trying to redraw the texts in a loop, and I need to edit the text constantly and the location of the text expandcollapse popup#include <GDIPlus.au3> #include <WindowsConstants.au3> #include <guiconstantsex.au3> Local $sWow64 = "" If @AutoItX64 Then $sWow64 = "\Wow6432Node" Local $sRegPath = "HKLM\SOFTWARE" & $sWow64 & "\AutoIt v3\AutoIt" Local $sFile = RegRead($sRegPath, "InstallDir") & "\Examples\GUI\Torus.png" ;-------------- ;GUI Global $frmMain = GUICreate("Example", 250, 300,-1,-1,$WS_POPUP, $WS_EX_TOPMOST) GUISetBkColor(0xFFFFFF) $b1=GUICtrlCreateButton("PLAY",30,250,50,50) $b2=GUICtrlCreateButton("PAUSE",80,250,50,50) $b3=GUICtrlCreateButton("CLEAN",130,250,50,50) $b4=GUICtrlCreateButton("EXIT",180,250,50,50) _GDIPlus_Startup() ;---- Global $hGraphic = _GDIPlus_GraphicsCreateFromHWND($frmMain) Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics(250, 250, $hGraphic) Global $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap) ;background $hImageBg = _GDIPlus_ImageLoadFromFile($sFile) ;Text 2 $hBrush_preto = _GDIPlus_BrushCreateSolid(0xFF000000) $hFormat = _GDIPlus_StringFormatCreate() $hFamily = _GDIPlus_FontFamilyCreate("Arial") $hFont = _GDIPlus_FontCreate($hFamily, 25, 1) $tLayout = _GDIPlus_RectFCreate(0, 20, 230, 0) _GDIPlus_StringFormatSetAlign($hFormat, 1) ;Text 1 $hPath = _GDIPlus_PathCreate() $hPen_white = _GDIPlus_PenCreate(0xFF303030, 4) $tLayout2 = _GDIPlus_RectFCreate(0, 130, 230, 0) $count=0 ;------------------- GUISetState(@SW_SHOW, $frmMain) ;~ _WinAPI_SetLayeredWindowAttributes($frmMain, 0xFFFFFF, 0xFF) $play=False While(True) $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE,$b4 Exit Case $b1 $play=true Case $b2 $play=False Case $b3 $count=0 EndSwitch ; clean _GDIPlus_GraphicsClear($hBuffer,0xFFFFFFFF) ; draw background _GDIPlus_GraphicsDrawImage($hBuffer, $hImageBg, 0, 0) ; Texto - Type 1 _GDIPlus_PathAddString($hPath, "Text 1" & @CRLF & $somando, $tLayout2, $hFamily, 1, 50, $hFormat) _GDIPlus_GraphicsFillPath($hBuffer, $hPath, $hBrush_preto) _GDIPlus_GraphicsDrawPath($hBuffer, $hPath, $hPen_white) ; Texto - Type 2 _GDIPlus_GraphicsDrawStringEx($hBuffer, "Text 2" & @CRLF & $count, $hFont, $tLayout, $hFormat, $hBrush_preto) _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0) if $play Then $count+=1 WEnd Edited May 3, 2017 by PedroWarlock
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