Jump to content
Sign in to follow this  
Belini

Tamanho da string em pixel's

Recommended Posts

Preciso criar uma gui que tenha apenas o tamanho suficiiente para colocar um lábel com um texto ou seja a gui vai ter o mesmo comprimento que o texto ocupar, tem como eu saber o tamanho em pixels que um texto vai ter depois que eu escolher a fonte e o tamanho dela?

 

OBS: Sabendo o comprimento do texto em pixels criarei a gui e o label do mesmo tamanho!

Share this post


Link to post
Share on other sites

Olá Belini.

 

Veja se isto resolve:

#include <GUIConstants.au3>
#include <FontConstants.au3>

Local Enum $PIX_LARGURA, $PIX_ALTURA
Local $sTexto = "String para calcular tamanho em pixels"

Local $aTamanho = TXT2PIXEL($sTexto, "Arial", 6, $FW_BOLD, $GUI_FONTITALIC)
MsgBox(4096, "TXT2PIXEL", "Texto: " & $sTexto & @CRLF & "Largura: " & $aTamanho[$PIX_LARGURA] & @CRLF & "Altura: " & $aTamanho[$PIX_ALTURA])

Local $aTamanho = TXT2PIXEL($sTexto, "Tahoma", 15, $FW_NORMAL)
MsgBox(4096, "TXT2PIXEL", "Texto: " & $sTexto & @CRLF & "Largura: " & $aTamanho[$PIX_LARGURA] & @CRLF & "Altura: " & $aTamanho[$PIX_ALTURA])

Exit

; #FUNCTION# ====================================================================================================================
; Name ..........: TXT2PIXEL
; Description ...: Calcula o tamanho em pixels de uma string levando em conta as características da fonte usada
; Syntax ........: TXT2PIXEL($sTexto[, $sFonte = ""[, $nTamanho = 12[, $nAtributo1 = $FW_NORMAL[, $nAtributo2 = $GUI_FONTNORMAL]]]])
; Parameters ....: $sTexto     - [String] Texto
;                  $sFonte     - [optional, String] Nome da fonte. Default is padrão da GUI
;                  $nTamanho   - [optional, Number] Tamanho da fonte. Default is 12
;                  $nAtributo1 - [optional, Number] Atributo/Largura da fonte. Default is $FW_NORMAL. As opções são:
;                                                   $FW_DONTCARE = 0 (Use a largura padrão)
;                                                   $FW_THIN = 100
;                                                   $FW_EXTRALIGHT = 200
;                                                   $FW_LIGHT = 300
;                                                   $FW_NORMAL = 400
;                                                   $FW_MEDIUM = 500
;                                                   $FW_SEMIBOLD = 600
;                                                   $FW_BOLD = 700 (negrito)
;                                                   $FW_EXTRABOLD = 800
;                                                   $FW_HEAVY = 900
;                  $nAtributo2 - [optional, Number] 2o Atributo da fonte. Default is $GUI_FONTNORMAL. As opções são:
;                                                   $GUI_FONTNORMAL (0) = Normal
;                                                   $GUI_FONTITALIC (2) = Italico
;                                                   $GUI_FONTUNDER (4) = Sublinhado
;                                                   $GUI_FONTSTRIKE (8) = Cortado
; Return values .: Sucesso     - [Array] Contendo a largura e a altura em pixels
;                  Falha       - [Number] 0 e seta @error = 1
; Author ........: Manimal (visite Forum AutoIT Brasil - http://forum.autoitbrasil.com/)
; Example .......: TXT2PIXEL("Exemplo", "Verdana", 12)
; ===============================================================================================================================
Func TXT2PIXEL($sTexto, $sFonte = "", $nTamanho = 12, $nAtributo1 = $FW_NORMAL, $nAtributo2 = $GUI_FONTNORMAL)
   If $sFonte = Default Then $sFonte = "" ; Usa a fonte padrão da GUI
   If $nTamanho = Default Then $nTamanho = 12
   If $nAtributo1 = Default Then $nAtributo1 = $FW_NORMAL
   If $nAtributo2 = Default Then $nAtributo2 = $GUI_FONTNORMAL
   Local $hHandle = GUICreate($sTexto, 0, 0, 0, 0, BitOR($WS_POPUP, $WS_MINIMIZE), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TRANSPARENT))
   If @error Then Return SetError(@error, 0, 0)
   Local $hJanela = GUISwitch($hHandle)
   If $hJanela = Null Then SetError(@error, 0, 0)
   GUISetFont($nTamanho, $nAtributo1, $nAtributo2, $sFonte, $hHandle)
   If @error Then Return SetError(@error, 0, 0)
   Local $aDimensoes = ControlGetPos($hHandle, "", GUICtrlCreateLabel($sTexto, 0, 0))
   If @error Then Return SetError(@error, 0, 0)
   Local $aRetorno = [ $aDimensoes[2], $aDimensoes[3] ]
   GUIDelete($hHandle)
   GUISwitch($hJanela)
   Return SetError(0, 0, $aRetorno)
EndFunc   ;==>TXT2PIXEL

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×