Differenze tra le versioni di "Colorare testo e sfondo in Console o Terminale"
Riga 103: | Riga 103: | ||
n = 10 * i + j | n = 10 * i + j | ||
If n > 108 Then Break | If n > 108 Then Break | ||
− | Print "\e["; n; "m"; Format(n, "###"); "\e[0m"; " "; | + | Print "\e["; <FONT Color=#B22222>n</font>; "m"; Format(n, "###"); "\e[0m"; " "; |
Next | Next | ||
Print | Print |
Versione delle 04:11, 1 set 2020
Come è noto, il testo stampato all'interno della console dell'IDE di Gambas è di colore nero, mentre quello stampato in Terminale è bianco.
Per poter cambiare il colore del testo oppure dello sfondo al testo, possiamo adottare almeno un paio di modalità.
Indice
Uso di speciali sequenze escape
Questa modalità prevede l'uso di speciali sequenze di codice escape. Tale sequenze escape vanno poste prima del carattere o dei caratteri da colorare.
Uso di sequenze escape con 8 numeri di colori
La prima parte della sequenza escape è formata da "\E". Va immediatamente precisato che in Gambas la lettera "E" dovrà essere sostituita con la corrispondente sua minuscola.
Pertanto questa parte della sequenza sarà:
\e
A seguire vi sarà il carattere "[" seguito da un numero di codice che specifica quale proprietà sarà interessata dalla modifica. In particolare il numero "3" è afferente al colore di un carattere testuale, mentre il numero "4" è afferente allo sfondo di un carattere testuale.
Bisognerà, poi, specificare il colore.
I colori assegnabili sono 8:
0 -> Nero
1 -> Rosso
2 -> Verde
3 -> Giallo
4 -> Blu
5 -> Magenta
6 -> Ciano
7 -> Bianco
L'intera sequenza, infine, dovrà essere chiusa con il carattere corrispondente alla lettera "m".
Così, se per esempio vogliamo colorare il testo di rosso, imposteremo il seguente codice: [Nota 1]
Print "\e[31mTesto qualsiasi"
Per annullare le modifiche, si imposterà la sequenza:
\e[0m
Nel seguente esempio pratico si scriveranno tre gruppi di caratteri: il primo sarà colorato di rosso; poi si annullerà la modifica portando così il secondo gruppo alla colorazione predefinita; il terzo gruppo sarà colorato di giallo con sfondo di color magenta.
Public Sub Main() Print "\e[31maaaa \e[0mbbbb \e[33m\e[45mcccc\e[0m" End
Uso di sequenze escape con 256 numeri di colori
Oltre agli otto colori sopra riportati, è possibile utilizzare sequenze escape con 256 numeri di colori.
La prima parte della sequenza è simile alla precedente:
\e
immediatamente segue il carattere " [ ".
Poi va impostato il numero "38" per il colore del testo, mentre va usato il numero "48" per lo sfondo del testo. Si porrà appresso il simbolo del "punto e virgola" (;).
Quindi si porrà il numero "5" seguito dal "punto e virgola" (;).
Segue il numero del colore da impostare da 0 a 255. [Nota 2]
Chiude la sequenza la solita lettera "m".
Se, dunque, ad esempio vogliamo colorare il testo di arancione, utilizzando il colore numero 208, possiamo scrivere così:
Print "\e[38;5;208m Testo qualsiasi"
Per annullare la sequenza escape impostata, si utilizzerà ancora una volta la sequenza:
\e[0m
Nel seguente esempio pratico si scriveranno tre gruppi di caratteri: il primo sarà colorato con il colore numero 208; poi si annullerà la modifica portando così il secondo gruppo alla colorazione predefinita; il terzo gruppo sarà colorato con il colore numero 160 con sfondo del colore numero 49.
Public Sub Main() Print "\e[38;5;208m aaaa \e[0mbbbb \e[38;5;160m\e[48;5;49mcccc\e[0m" End
Uso della funzione esterna system( ) e del comando tput
Questa modalità prevede l'uso della funzione esterna system( ) in combinazione con il comando tput.
Mostriamo un esempio pratico:
' int system(const char *__command) ' Execute the given line as a shell command. Private Extern system_C(__command As String) As Integer In "libc:6" Exec "system" Public Sub Main() ' Si imposta il colore del testo (da 0 a 7): system_C("tput setaf 3") ' Si imposta il colore dello sfondo del testo (da 0 a 7): system_C("tput setab 1") ' Si imposta la modalità "grassetto" del testo): system_C("tput bold") ' Si imposta la modalità "sottolineato" del testo): system_C("tput smul") Print "Testo qualsiasi"; End
Note
[1] La sequenza escape, adottando gli opportuni codici, consente di attribuire al testo, scritto in Console o in Terminale, anche altre caratteristiche.
Mostriamo di seguito un codice per verificare tutte le opzioni offerte modificando i valori dell'escape:
Public Sub Main() Dim i, j, n As Integer For i = 0 To 10 For j = 0 To 9 n = 10 * i + j If n > 108 Then Break Print "\e["; n; "m"; Format(n, "###"); "\e[0m"; " "; Next Print Next End
[2] Per i numeri corrispondenti ai 256 colori, vedi la seguente tabella:
Modalità 256-colori — primo piano (foreground): ESC[38;5;#m sfondo (background): ESC[48;5;#m | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Colori standard | Colori ad alta-intensità | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
216 colori | ||||||||||||||||||||||||||||||||||||||||||||||||||||
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | |||||||||||||||||
52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | |||||||||||||||||
88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | |||||||||||||||||
124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | |||||||||||||||||
160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | |||||||||||||||||
196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | |||||||||||||||||
Colori in scala di grigi |
232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 |