Code : Tout sélectionner
;coded by UEZ 2013-04-26
#include <GDIPlus.au3>
_GDIPlus_Startup()
Global $iW = 650, $iH = 210, $aResult
Global Const $hGUI = GUICreate("Test", $iW, $iH)
GUISetBkColor(0xFFFFFF)
GUISetState()
Global Const $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
Global Const $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iW, $iH, $hGraphics)
Global Const $hCtxt = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsSetPixelOffsetMode($hCtxt, 2)
_GDIPlus_GraphicsSetTextRenderingHint($hCtxt, 4)
_GDIPlus_GraphicsSetSmoothingMode($hCtxt, 2)
$aResult = _GDIPlus_DrawText($hCtxt, @ComputerName, 40, 20, 15, "Arial", 0xF00000FF, 0x80808020)
$aResult = _GDIPlus_DrawText($hCtxt, "Online", 40, $aResult[0] + $aResult[2] + 40, 15, "Arial", 0xF000FF00, 0xA8A0A0A0, 3)
$aResult = _GDIPlus_DrawText($hCtxt, @ComputerName, 70, 20, 120, "Arial", 0xFFFFFFFF, 0x80808020, 0.75, 3)
$aResult = _GDIPlus_DrawText($hCtxt, "Offline", 70, $aResult[0] + $aResult[2] + 40, 120, "Arial", 0xFFFF0000, 0xA8808080, 3, 1)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iW, $iH)
_GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\Text.png")
Do
If GUIGetMsg() = -3 Then
_GDIPlus_GraphicsDispose($hCtxt)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
GUIDelete()
Exit
EndIf
Until False
Func _GDIPlus_DrawText($hGraphics, $sText, $fFontSize, $iX = 0, $iY = 0, $sFontName = "Arial", $iFGColor = 0xFF0000FF, $iBGColor = 0xF8FFFFFF, $fStretch = 1, $iPenSize = 1) ;coded by UEZ 2013
Local Const $hFormat = _GDIPlus_StringFormatCreate()
Local Const $hFamily = _GDIPlus_FontFamilyCreate($sFontName)
Local Const $hPath = _GDIPlus_PathCreate()
Local Const $tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
Local Const $hLineBrush = _GDIPlus_LineBrushCreate(0, 0, 20, 4, 0x80000000, $iBGColor, 1)
Local Const $hPen = _GDIPlus_PenCreate2($hLineBrush, $iPenSize)
Local Const $fRad = ACos(-1) / 180
Local $i
For $i = 1 To 360 Step 90
DllStructSetData($tLayout, "X", $iX + Cos($i * $fRad))
DllStructSetData($tLayout, "Y", $iY + Sin($i * $fRad))
_GDIPlus_PathAddString($hPath, $sText, $tLayout, $hFamily, 0, $fFontSize, $hFormat)
Next
_GDIPlus_GraphicsDrawPath($hGraphics, $hPath, $hPen)
Local $aWorldBounds = _GDIPlus_PathGetWorldBounds($hPath)
_GDIPlus_PathReset($hPath)
Local Const $iFGColorShift = 0xFF000000 + BitShift(BitAND($iFGColor, 0xFF0000), 1) + BitShift(BitAND($iFGColor, 0xFF00), 1) + BitShift(BitAND($iFGColor, 0xFF), 1) ;half RGB color values
Local Const $hBrush = _GDIPlus_LineBrushCreate(0, 0, $aWorldBounds[2] * $fStretch, $aWorldBounds[3] * 1.5, $iFGColorShift, $iFGColor, 1)
_GDIPlus_LineBrushSetGammaCorrection($hBrush, True)
DllStructSetData($tLayout, "X", $iX)
DllStructSetData($tLayout, "Y", $iY)
_GDIPlus_PathAddString($hPath, $sText, $tLayout, $hFamily, 0, $fFontSize, $hFormat)
_GDIPlus_GraphicsFillPath($hGraphics, $hPath, $hBrush)
$aWorldBounds = _GDIPlus_PathGetWorldBounds($hPath)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_FontFamilyDispose($hFamily)
_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_BrushDispose($hLineBrush)
_GDIPlus_PathDispose($hPath)
Return $aWorldBounds
EndFunc ;==>_GDIPlus_DrawText