#include #include #include #include "_StringInPixels.au3" Global $iOffset = 50, $iGdipYoffset = 200, $iGmsYoffset = 400 Global $sLabelTest = "Normal AutoIt GUI", $sLabelFont = "Arial", $fLabelSize = 16, $iLabelStyle = 0 Global $iLabelWeight = 0 ; Create GUI $hGUI = GUICreate("StringInPixels Test", 600, 600, -1, -1) Global $aStringSize = _StringInPixels($hGUI, $sLabelTest, $sLabelFont, $fLabelSize, $iLabelStyle) $lblUL = GUICtrlCreateLabel("0,0", $iOffset-20, $iOffset-10) GUICtrlSetColor(-1, 0xFF0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $lblUR = GUICtrlCreateLabel($aStringSize[0] & ",0", $iOffset+$aStringSize[0], $iOffset-10) GUICtrlSetColor(-1, 0xFF0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $lblLL = GUICtrlCreateLabel("0," & $aStringSize[1], $iOffset-20, $iOffset+$aStringSize[1]) GUICtrlSetColor(-1, 0xFF0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $lblLR = GUICtrlCreateLabel($aStringSize[0] &"," & $aStringSize[1], $iOffset+$aStringSize[0], $iOffset+$aStringSize[1]) GUICtrlSetColor(-1, 0xFF0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Label1 = GUICtrlCreateLabel($sLabelTest, $iOffset, $iOffset, 500, 200) If BitAND($iLabelStyle, 1) Then $iLabelWeight = 700 ;GUI and GDI+ use different style systems--ugh GUICtrlSetFont(-1, $fLabelSize, $iLabelWeight, BitAND($iLabelStyle, 14), "Arial") GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) $Graphic1 = GUICtrlCreateGraphic(0, 0, 591, 137) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFF0000) GUICtrlSetGraphic(-1, $GUI_GR_RECT, $iOffset, $iOffset, $aStringSize[0], $aStringSize[1]) GUISetState(@SW_SHOW) _GDIPlus_Startup() Global $sGDIPTest = "This tests the Measure Character Ranges technique." Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ;Create a graphics object from a window handle Local $hPen = _GDIPlus_PenCreate(0x66006600) Local $hBrush_Font = _GDIPlus_BrushCreateSolid(0xFF000000) _GDIPlus_GraphicsSetTextRenderingHint($hGraphic, $GDIP_TEXTRENDERINGHINT_CLEARTYPEGRIDFIT) Local $hFormat = _GDIPlus_StringFormatCreate() Local $hFamily = _GDIPlus_FontFamilyCreate("Tahoma") Local $hFont = _GDIPlus_FontCreate($hFamily, 16, 0) Local $tLayout = _GDIPlus_RectFCreate($iOffset, $iGdipYoffset, 200, 150) _GDIPlus_GraphicsDrawRect($hGraphic, $iOffset, $iGdipYoffset, 200, 150, $hPen) _GDIPlus_GraphicsDrawStringEx($hGraphic, $sGDIPTest, $hFont, $tLayout, $hFormat, $hBrush_Font) Global $aGDIPtestSize = _StringInPixels_gdip($hGraphic, $sGDIPTest, $hFont, $tLayout, $hFormat) Local $hPerimeter = _GDIPlus_PenCreate(0xFFFF0000) _GDIPlus_GraphicsDrawRect($hGraphic, $iOffset+3, $iGdipYoffset+3, $aGDIPtestSize[0], $aGDIPtestSize[1], $hPerimeter); +3 is just to line up layout rectangle to measuring rectangle _GDIPlus_GraphicsDrawString($hGraphic, "0,0", $iOffset-20, $iGdipYoffset-10, "Microsoft Sans Serif", 8) _GDIPlus_GraphicsDrawString($hGraphic, $aGDIPtestSize[0] & ",0", $iOffset+$aGDIPtestSize[0], $iGdipYoffset-10, "Microsoft Sans Serif", 8) _GDIPlus_GraphicsDrawString($hGraphic, "0," & $aGDIPtestSize[1], $iOffset-20, $iGdipYoffset+$aGDIPtestSize[1], "Microsoft Sans Serif", 8) _GDIPlus_GraphicsDrawString($hGraphic, $aGDIPtestSize[0] & "," & $aGDIPtestSize[1], $iOffset+$aGDIPtestSize[0], $iGdipYoffset+$aGDIPtestSize[1], "Microsoft Sans Serif", 8) Global $sGmsTest = "This tests the Measure String technique. Note the extra padding" _GDIPlus_GraphicsSetTextRenderingHint($hGraphic, $GDIP_TEXTRENDERINGHINT_CLEARTYPEGRIDFIT) Local $hGmsFamily = _GDIPlus_FontFamilyCreate("Georgia") Local $hGmsFont = _GDIPlus_FontCreate($hGmsFamily, 14, 0) Local $tGmsLayout = _GDIPlus_RectFCreate($iOffset, $iGmsYoffset, 200, 150) _GDIPlus_GraphicsDrawRect($hGraphic, $iOffset, $iGmsYoffset, 200, 150, $hPen) _GDIPlus_GraphicsDrawStringEx($hGraphic, $sGmsTest, $hGmsFont, $tGmsLayout, $hFormat, $hBrush_Font) Global $aGmstestSize = _GDIPlus_GraphicsMeasureString($hGraphic, $sGmsTest, $hGmsFont, $tGmsLayout, $hFormat) Local $iGmsWidth = Round($aGmstestSize[0].Width, 0) Local $iGmsHeight = Round($aGmstestSize[0].Height, 0) _GDIPlus_GraphicsDrawRect($hGraphic, $iOffset+2, $iGmsYoffset+2, $iGmsWidth, $iGmsHeight, $hPerimeter); +2 is just to line up layout rectangle to measuring rectangle _GDIPlus_GraphicsDrawString($hGraphic, "0,0", $iOffset-20, $iGmsYoffset-10, "Microsoft Sans Serif", 8) _GDIPlus_GraphicsDrawString($hGraphic, $iGmsWidth & ",0", $iOffset+$iGmsWidth, $iGmsYoffset-10, "Microsoft Sans Serif", 8) _GDIPlus_GraphicsDrawString($hGraphic, "0," & $iGmsHeight, $iOffset-20, $iGmsYoffset+$iGmsHeight, "Microsoft Sans Serif", 8) _GDIPlus_GraphicsDrawString($hGraphic, $iGmsWidth & "," & $iGmsHeight, $iOffset+$iGmsWidth, $iGmsYoffset+$iGmsHeight, "Microsoft Sans Serif", 8) ; Clean up resources _GDIPlus_FontDispose($hFont) _GDIPlus_FontFamilyDispose($hFamily) _GDIPlus_StringFormatDispose($hFormat) _GDIPlus_BrushDispose($hBrush_Font) ;~ _GDIPlus_BrushDispose($hBrush_Region) _GDIPlus_PenDispose($hPen) _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_Shutdown() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd