Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

Titolo: Calcolo di altezza e larghezza di un testo

Categoria: Plugin Ultimo Aggiornamento: 10/02/06


In 4D è incluso un plugin, 4D Chart, che non è molto considerato (forse perchè è gratis :) );in realtà oltre a fare i grafici fornisce alcuni strumenti interessanti, ad esempio per la elaborazione di testi o disegni all'interno di una immagine. Ecco un interessante esempio di utilizzo.

Usando una offscreen area di 4D Chart è possibile conoscere larghezza e altezza di una campo testo, anche multilinea.
I parametri passati sono il testo, il carattere, la dimensione, lo stile, il puntatore all'oggetto che deve ricevere la larghezza e il puntatore all'oggetto che deve ricevere l'altezza.

Ecco il metodo:

C_TEXT($Testo_t)
$Testo_t:=$1
C_STRING(255;$TipoCarattere_S)
$TipoCarattere_S:=$2
C_LONGINT($Dimensione_L;$StileTesto_L)
$Dimensione_L:=$3
$StileTesto_L:=$4
C_LONGINT($Larghezza_L;$Altezza_L)
$Larghezza_L:=0
$Altezza_L:=0
If ($Testo_t#"")
    C_LONGINT($NumeroTipoCarattere_L)
    $NumeroTipoCarattere_L:=CT Font number ($TipoCarattere_S)
    If ($NumeroTipoCarattere_L#0)
        C_LONGINT($ChartArea_L; $TestoChart_L)
        $ChartArea_L:=CT New offscreen area
        $TestoChart_L:=CT Draw text ($ChartArea_L;0;0;2048;5;$Testo_t)
        CT SET TEXT ATTRIBUTES ($ChartArea_L;$TestoChart_L;$NumeroTipoCarattere_L;$Dimensione_L;$StileTesto_L;0;0)
        C_LONGINT($sinistra_L;$alto_L;$destra_L;$basso_L)
        CT GET BOUNDARY ($ChartArea_L;$TestoChart_L;$sinistra_L;$alto_L;$destra_L;$basso_L)
        $Larghezza_L:=$destra_L-$sinistra_L `La larghzza viene trovata riducendola
        $Altezza_L:=$basso_L-$alto_L `L’altezza è corretta
        If ($Larghezza_L>0)
           Repeat
           $Larghezza_L:=$Larghezza_L-100
           CT SIZE ($ChartArea_L;$TestoChart_L;$Larghezza_L;$Altezza_L)
           CT GET BOUNDARY ($ChartArea_L;$TestoChart_L;$sinistra_L;$alto_L;$destra_L;$basso_L)
           Until ((($basso_L-$alto_L)>$Altezza_L) | ($Larghezza_L<100))
           $Larghezza_L:=$Larghezza_L+(100*Num(($basso_L-$alto_L)>$Altezza_L))
           Repeat
           $Larghezza_L:=$Larghezza_L-20
           CT SIZE ($ChartArea_L;$TestoChart_L;$Larghezza_L;$Altezza_L)
           CT GET BOUNDARY ($ChartArea_L;$TestoChart_L;$sinistra_L;$alto_L;$destra_L;$basso_L)
           Until ((($basso_L-$alto_L)>$Altezza_L) | ($Larghezza_L<20))
           $Larghezza_L:=$Larghezza_L+(20*Num(($basso_L-$alto_L)>$Altezza_L))
           Repeat
           $Larghezza_L:=$Larghezza_L-1
           CT SIZE ($ChartArea_L;$TestoChart_L;$Larghezza_L;$Altezza_L)
           CT GET BOUNDARY ($ChartArea_L;$TestoChart_L;$sinistra_L;$alto_L;$destra_L;$basso_L)
           Until ((($basso_L-$alto_L)>$Altezza_L) | ($Larghezza_L<1))
           $Larghezza_L:=$Larghezza_L+1
        Else
           `Se il testo supera i 2048 pixel, ritorna 0
        End if
        CT DELETE OFFSCREEN AREA ($ChartArea_L)
    End if
End if
$5->:=$Larghezza_L
$6->:=$ Altezza_L

Fonte: 4DToday - Michel Pourcel


Inviato da: PierPaolo Sichera Visite: 6902

Se accedi con utente e password, puoi aggiungere dei commenti.


Accesso

User: Nuovo
Pass: Accedi

Utenti Registrati

Cerca

Se non trovi le informazioni che cerchi scrivi a aiuto@sviluppo4d.it

4D Principali

4D Discussioni

Faq random


Crediti

Dominio registrato da ZetaNet
Sito realizzato da Nexus srl
4D SQL 11.8.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
265 utenti registrati

Pagina servita il 17/11/17 alle 20:37:08 Valid HTML 4.01! Valid CSS!

Mutuo Facile, Serie Filmcards, Serie Singloids e altre app di Nexus srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per Apple iPhone, iPod, iPad della IPC