UDF > GDIPlus > Text >


_GDIPlus_GraphicsMeasureCharacterRanges

Obtient un ensemble d'objets r�gion dont chacun d�limite une plage de positions de caract�re dans une cha�ne

#include <GDIPlus.au3>
_GDIPlus_GraphicsMeasureCharacterRanges ( $hGraphics, $sString, $hFont, $tLayout, $hStringFormat )

Param�tres

$hGraphics Handle de l'objet Graphics
$sString La cha�ne � mesurer
$hFont Handle de l'objet Font qui sp�cifie les caract�ristiques de la police
$tLayout Structure $tagGDIPRECTF qui d�finit les limites de la cha�ne
$hStringFormat Handle de l'objet StringFormat qui sp�cifie les plages de caract�res et les informations de mise en page, tels que l'alignement, le rognage, les taquets de tabulation, et ainsi de suite

Valeur de retour

Succ�s: Retourne un tableau d'objets r�gion :
    [0] - Nombre de r�gions
    [1] - R�gion 1
    [2] - R�gion 2
    [3] - R�gion 3
�chec: D�finit @error <> 0, @extended contient le code erreur GPSTATUS ($GPID_ERR*).

Remarque

Si la fonction r�ussit, c'est la responsabilit� de l'utilisateur de lib�rer ces r�gions.

En relation

$tagGDIPRECTF, _GDIPlus_GraphicsMeasureString, _GDIPlus_RegionDispose

Voir aussi

Consultez GdipMeasureCharacterRanges dans la Librairie MSDN.

Exemple

#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Cr�e une GUI
    Local $hGUI = GUICreate("GDI+", 640, 220)
    GUISetState(@SW_SHOW)

    _GDIPlus_Startup()
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ; Cr�e un objet graphique � partir d'un handle fen�tre
    _GDIPlus_GraphicsClear($hGraphic, 0xFFFFFFFF)

    Local $hPen = _GDIPlus_PenCreate(0xFF006600)
    Local $hBrush_Region = _GDIPlus_BrushCreateSolid(0x44FF0000)
    Local $hBrush_Font = _GDIPlus_BrushCreateSolid(0xFFFF0000)

    Local $hFormat = _GDIPlus_StringFormatCreate()
    Local $hFamily = _GDIPlus_FontFamilyCreate("Arial")

    Local $sString = "Measure Character Ranges"

    Local $aRanges[4][2] = [[3]]
    $aRanges[1][0] = 0 ; Mesure le premier caract�re (de base 0)
    $aRanges[1][1] = 1 ; Un caract�re � mesurer
    $aRanges[2][0] = 4 ; 5-i�me caract�re
    $aRanges[2][1] = 5 ; mesure 5 caract�res
    $aRanges[3][0] = 14 ; Le 15-i�me caract�re
    $aRanges[3][1] = 7 ; Mesure 7 caract�res

    _GDIPlus_StringFormatSetMeasurableCharacterRanges($hFormat, $aRanges) ; D�finit les plages

    ; Mesure les caract�res, taille de police 14
    Local $hFont = _GDIPlus_FontCreate($hFamily, 14, 0)
    Local $tLayout = _GDIPlus_RectFCreate(10, 10, 200, 200)
    _GDIPlus_GraphicsDrawRect($hGraphic, 10, 10, 200, 200, $hPen)
    _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $tLayout, $hFormat, $hBrush_Font)
    Local $aRegions = _GDIPlus_GraphicsMeasureCharacterRanges($hGraphic, $sString, $hFont, $tLayout, $hFormat) ; Obtient l'ensemble des r�gions
    For $i = 1 To $aRegions[0]
        _GDIPlus_GraphicsFillRegion($hGraphic, $aRegions[$i], $hBrush_Region)
        _GDIPlus_RegionDispose($aRegions[$i])
    Next
    _GDIPlus_FontDispose($hFont)

    ; Mesure les caract�res, taille de police 28
    $hFont = _GDIPlus_FontCreate($hFamily, 28, 0)
    $tLayout = _GDIPlus_RectFCreate(220, 10, 200, 200)
    _GDIPlus_GraphicsDrawRect($hGraphic, 220, 10, 200, 200, $hPen)
    _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $tLayout, $hFormat, $hBrush_Font)
    $aRegions = _GDIPlus_GraphicsMeasureCharacterRanges($hGraphic, $sString, $hFont, $tLayout, $hFormat)
    For $i = 1 To $aRegions[0]
        _GDIPlus_GraphicsFillRegion($hGraphic, $aRegions[$i], $hBrush_Region)
        _GDIPlus_RegionDispose($aRegions[$i])
    Next
    _GDIPlus_FontDispose($hFont)

    ; Mesure les caract�res, taille de police 56
    $hFont = _GDIPlus_FontCreate($hFamily, 56, 0)
    $tLayout = _GDIPlus_RectFCreate(430, 10, 200, 200)
    _GDIPlus_GraphicsDrawRect($hGraphic, 430, 10, 200, 200, $hPen)
    _GDIPlus_GraphicsDrawStringEx($hGraphic, $sString, $hFont, $tLayout, $hFormat, $hBrush_Font)
    $aRegions = _GDIPlus_GraphicsMeasureCharacterRanges($hGraphic, $sString, $hFont, $tLayout, $hFormat)
    For $i = 1 To $aRegions[0]
        _GDIPlus_GraphicsFillRegion($hGraphic, $aRegions[$i], $hBrush_Region)
        _GDIPlus_RegionDispose($aRegions[$i])
    Next
    _GDIPlus_FontDispose($hFont)

    Local $iCount = _GDIPlus_StringFormatGetMeasurableCharacterRangeCount($hFormat)
    MsgBox($MB_SYSTEMMODAL, "", "MeasurableCharacterRangeCount: " & $iCount)

    ; Boucle jusqu'� ce que l'utilisateur quitte.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    ; Nettoie les ressources
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush_Font)
    _GDIPlus_BrushDispose($hBrush_Region)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
EndFunc   ;==>Example